| Dear Xavier,
I have done changes in code for depth and topindex as follows.
Also I have commented callback registration for check_link and check_html for
narrow down the problem.
However, after doing this and analyzing crash dump it seems that there is some
issue with libhtrack with multi-threading.
Please find the attached crash dump analyzed using WinDbg.
Please revert back on this issue.
Thanks & regards,
Rajesh
/* Create option settings and set callbacks (wrappers) */
httrackp* opt = hts_create_opt();
// Set crawl depth to 3
opt->depth = 3;
// Disable generation of top index
opt->dir_topindex = 0;
CHAIN_FUNCTION(opt, end, httrack_wrapper_end_431, NULL);
// CHAIN_FUNCTION(opt, check_link, httrack_wrapper_check_431, NULL);
// CHAIN_FUNCTION(opt, check_html, httrack_wrapper_checkhtml_431, NULL);
CHAIN_FUNCTION(opt, linkdetected, httrack_wrapper_linkdetected_431, NULL);
/* Then, launch the mirror */
int ret = hts_main2(argc, argv, opt);
/* Clear option state */
hts_free_opt(opt);
hts_uninit();
0:010> !analyze -v
*******************************************************************************
*
*
* Exception Analysis
*
*
*
*******************************************************************************
FAULTING_IP:
libhttrack!fspc+15e [x:\dev\lab-memory leak\4.31\httrack\httrack\src\htscore.c
@ 2747]
01842fbe 8b4804 mov ecx,[eax+0x4]
EXCEPTION_RECORD: ffffffff -- (.exr ffffffffffffffff)
ExceptionAddress: 01842fbe (libhttrack!fspc+0x0000015e)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 00021a4c
Attempt to read from address 00021a4c
DEFAULT_BUCKET_ID: APPLICATION_FAULT
PROCESS_NAME: SlowMonitor.exe
ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx" referenced
memory at "0x%08lx". The memory could not be "%s".
READ_ADDRESS: 00021a4c
BUGCHECK_STR: ACCESS_VIOLATION
LAST_CONTROL_TRANSFER: from 017e82b8 to 01842fbe
STACK_TEXT:
090cef3c 017e82b8 00000000 01a42ce0 019fd368 libhttrack!fspc+0x15e
[f:\bps\lab-memory leak\4.31\httrack\httrack\src\htscore.c @ 2747]
090d5d2c 0194af07 0362da58 0649f668 09116d34 libhttrack!back_wait+0x5f58
[f:\bps\lab-memory leak\4.31\httrack\httrack\src\htsback.c @ 2724]
090e5dbc 01916b42 09112624 0910161c 09100e14 libhttrack!hts_wait_delayed+0xee7
[f:\bps\lab-memory leak\4.31\httrack\httrack\src\htsparse.c @ 4324]
09109684 0182ed79 09112624 091125a4 0916cd40 libhttrack!htsparse+0x149e2
[f:\bps\lab-memory leak\4.31\httrack\httrack\src\htsparse.c @ 2387]
0915cbb8 01868ea3 064c2d18 0649f668 0000002f libhttrack!httpmirror+0xee19
[f:\bps\lab-memory leak\4.31\httrack\httrack\src\htscore.c @ 1477]
0916cd40 0163b368 0000002f 0642d350 0649f668 libhttrack!hts_main2+0x1cdc3
[f:\bps\lab-memory leak\4.31\httrack\httrack\src\htscoremain.c @ 2129]
0916ffec 00000000 0163b930 01fa3b70 00000000
kernel32!ExpandEnvironmentStringsA+0x103
FOLLOWUP_IP:
libhttrack!fspc+15e [x:\dev\lab-memory leak\4.31\httrack\httrack\src\htscore.c
@ 2747]
01842fbe 8b4804 mov ecx,[eax+0x4]
FAULTING_SOURCE_CODE:
2743: else
2744: fprintf(fp,"%s\t \t",s);
2745: if (strc != NULL) {
2746: if (strcmp(type,"warning")==0)
> 2747: strc->warning++;
2748: else if (strcmp(type,"error")==0)
2749: strc->error++;
2750: else if (strcmp(type,"info")==0)
2751: strc->info++;
2752: }
SYMBOL_STACK_INDEX: 0
FOLLOWUP_NAME: MachineOwner
SYMBOL_NAME: libhttrack!fspc+15e
MODULE_NAME: libhttrack
IMAGE_NAME: libhttrack.dll
DEBUG_FLR_IMAGE_TIMESTAMP: 44c9e901
STACK_COMMAND: ~10s; .ecxr ; kb
FAILURE_BUCKET_ID: ACCESS_VIOLATION_libhttrack!fspc+15e
BUCKET_ID: ACCESS_VIOLATION_libhttrack!fspc+15e
Followup: MachineOwner | |