diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2011-07-01 22:00:59 +0000 |
---|---|---|
committer | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2011-07-01 22:00:59 +0000 |
commit | fafa84d23e3d6d5f755b04101004e5beb95f80a7 (patch) | |
tree | 2f33652a773b48dac982ea60bc078eb981dd1217 /dumpcap.c | |
parent | 30fe3b47ea04e043466814574e91e27853ad49aa (diff) |
Try to get more information about AV.
svn path=/trunk/; revision=37861
Diffstat (limited to 'dumpcap.c')
-rw-r--r-- | dumpcap.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -643,7 +643,17 @@ open_capture_device(interface_options *interface_opts, interface_opts->promisc_mode, CAP_READ_TIMEOUT, *open_err_str); } __except(TRUE) { - g_log(LOG_DOMAIN_CAPTURE_CHILD, G_LOG_LEVEL_ERROR, "Exception from pcap_open_live(): 0x%x (0x%x)\n", GetExceptionCode(), ERROR_PROC_NOT_FOUND); + if (GetExceptionCode() == STATUS_ACCESS_VIOLATION) { + EXCEPTION_POINTERS *ex = GetExceptionInformation(); + + g_log(LOG_DOMAIN_CAPTURE_CHILD, G_LOG_LEVEL_ERROR, "Exception from pcap_open_live(): %s AV @ %p IP: %p\n", + (ex->ExceptionInformation[0] ? "WRITE" : "READ"), + (void *) ex->ExceptionInformation[1], + (void *) ex->ExceptionAddress); + + g_log(LOG_DOMAIN_CAPTURE_CHILD, G_LOG_LEVEL_DEBUG, "open_err_str: %p, %p", open_err_str, *open_err_str); + } else + g_log(LOG_DOMAIN_CAPTURE_CHILD, G_LOG_LEVEL_ERROR, "Exception from pcap_open_live(): 0x%x (0x%x)\n", GetExceptionCode(), ERROR_PROC_NOT_FOUND); pcap_h = NULL; } #else |