| Following crash is generated for libhttrack.dll.
When I opened crash dump with WinDbg it browsed to fspc () function form
"htscore.c".
From the disassembly, we could observe that it matches.
What I guess is, strc is not pointing to valid memory location.
Please let me know your comments.
Assembly:
FAULT ->01f32fbe 8b4804 mov ecx,[eax+0x4]
ds:0023:00021a4c=???????? 01f32fc1 83c101 add ecx,0x1
Source code:
FAULT--> strc->warning++; <-----
*----> State Dump for Thread Id 0x1794 <----*
eax=00021a48 ebx=00000000 ecx=020ec370 edx=020ec370 esi=03300040 edi=02e7ef30
eip=01f32fbe esp=02e7ed20 ebp=02e7ef30 iopl=0 nv up ei pl zr na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246
*** WARNING: Unable to verify checksum for X:\dev\htttrack4.31\libhttrack.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for
X:\dev\htttrack4.31\libhttrack.dll -
function: libhttrack!hts_buildtopindex
01f32fa0 837df400 cmp dword ptr [ebp-0xc],0x0
01f32fa4 746e jz libhttrack!hts_buildtopindex+0x83daa
(01f33014)
01f32fa6 6868c30e02 push 0x20ec368
01f32fab 8b4510 mov eax,[ebp+0x10]
01f32fae 50 push eax
01f32faf e8c1b2f7ff call libhttrack!jump_toport+0x4b
(01eae275)
01f32fb4 83c408 add esp,0x8
01f32fb7 85c0 test eax,eax
01f32fb9 7511 jnz libhttrack!hts_buildtopindex+0x83d62
(01f32fcc)
01f32fbb 8b45f4 mov eax,[ebp-0xc]
FAULT ->01f32fbe 8b4804 mov ecx,[eax+0x4]
ds:0023:00021a4c=???????? 01f32fc1 83c101 add ecx,0x1
01f32fc4 8b55f4 mov edx,[ebp-0xc]
01f32fc7 894a04 mov [edx+0x4],ecx
01f32fca eb48 jmp libhttrack!hts_buildtopindex+0x83daa
(01f33014)
01f32fcc 6860c30e02 push 0x20ec360
01f32fd1 8b4510 mov eax,[ebp+0x10]
01f32fd4 50 push eax
01f32fd5 e89bb2f7ff call libhttrack!jump_toport+0x4b
(01eae275)
01f32fda 83c408 add esp,0x8
01f32fdd 85c0 test eax,eax
*----> Stack Back Trace <----*
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may be
wrong.
02e7ef30 01ed82b8 00000000 02131c60 020ec368
libhttrack!hts_buildtopindex+0x83d54
02e85d20 0203aee7 021aebc0 03000068 02ec6d28
libhttrack!hts_buildtopindex+0x2904e
02e95db0 02006b42 02ec2618 02eb1610 02eb0e08
libhttrack!hts_buildtopindex+0x18bc7d
02eb9678 01f1ed79 02ec2618 02ec2598 02f1cd34
libhttrack!hts_buildtopindex+0x1578d8
02f0cbac 01f58ea3 03023718 03000068 01ead1b8
libhttrack!hts_buildtopindex+0x6fb0f
02f1cd34 01d2caa1 0000002f 021ac818 03000068
libhttrack!hts_buildtopindex+0xa9c39
===================================================================================
// écrire n espaces dans fp
HTS_INLINE int fspc(httrackp *opt,FILE* fp,const char* type) {
fspc_strc* strc = &opt->state.fspc;
//
if (fp) {
char s[256];
time_t tt;
struct tm* A;
tt=time(NULL);
A=localtime(&tt);
if (A == NULL) {
int localtime_returned_null=0;
assert(localtime_returned_null);
}
strftime(s,250,"%H:%M:%S",A);
if (strnotempty(type))
fprintf(fp,"%s\t%c%s: \t",s,hichar(*type),type+1);
else
fprintf(fp,"%s\t \t",s);
if (strc != NULL) {
if (strcmp(type,"warning")==0)
FAULT--> strc->warning++; <-----
else if (strcmp(type,"error")==0)
strc->error++;
else if (strcmp(type,"info")==0)
strc->info++;
}
}
else if (strc == NULL) {
return 0;
}
else if (!type) {
strc->error=strc->warning=strc->info=0; // reset
}
else if (strcmp(type,"warning")==0)
return strc->warning;
else if (strcmp(type,"error")==0)
return strc->error;
else if (strcmp(type,"info")==0)
return strc->info;
return 0;
} | |