Page fault: completely lost while debugging

Sergio tioduke at gmail.com
Sun Dec 18 18:54:17 CST 2005


Hi all,

I am having one problem with one project I have just made compile. It's one
of the plugins of the windows' multiprotocol IM program, Miranda.

I will try to explain what my problem is.
After solving some issues with compilation (mainly some undefined names -
functions - in std namespace - it's a C++ project), I tried to run the
application and when asking the plugin to connect to one IRC server (it is
the application's IRC protocol plugin) it crashes with this error:

Unhandled exception: page fault on read access to 0x00000004 in 32-bit code
(0x41d551de).
In 32 bit mode.
fixme:dbghelp:elf_load_debug_info_from_map Alpha-support for Dwarf2
information for irc<elf>
Register dump:
 CS:0073 SS:007b DS:007b ES:007b FS:174f GS:0033
 EIP:41d551de ESP:43510adc EBP:43510af8 EFLAGS:00210206(   - 00      - RIP1)
 EAX:00000004 EBX:41db6434 ECX:00000000 EDX:7c0cbe30
 ESI:00000000 EDI:41c14f10
Stack dump:
0x43510adc:  41d5514e 01000000 4f4d2e6c 41db6434
0x43510aec:  7c126a38 4017c0d4 41db6434 43510b28
0x43510afc:  41d9b4b5 7c126a38 00000000 00000000
0x43510b0c:  41d9b45c 401f6b31 407bdbd0 4078f8e0
0x43510b1c:  41d55142 7c126a38 407d4528 43510b40
0x43510b2c:  407c9e31 4078f8e0 41d9b450 4078f8e0
02e9: sel=174f base=41c14000 limit=00001fff 32-bit rw-
Backtrace:
=>1 0x41d551de in irc (+0x51de) (0x41d551de)
  2 0x41d9b4b5 in irc (+0x4b4b5) (0x41d9b4b5)
  3 0x407c9e31 in msvcrt (+0x29e31) (0x407c9e31)
  4 0x404ebbfb in kernel32 (+0x6bbfb) (0x404ebbfb)
  5 0x401d6cd3 in ntdll (+0x36cd3) (0x401d6cd3)
  6 0x40051297 start_thread+0x87 in libpthread.so.0 (0x40051297)
  7 0x4011c37e __clone+0x5e in libc.so.6 (0x4011c37e)
0x41d551de: movl        0x0(%eax),%eax

Which if I understand the dump well is due to a problem in __clone function
trying to access 0x00000004 (eax). Am I right?

Then I tried to debug and to get more information. I got this other line in
the new dump:
wine: Unhandled page fault on read access to 0x00000004 at address
0x41d551de (thread 005d), starting debugger...

And here I am copying the previous lines of the debug information on that
thread (005d):
005d:Call ntdll.RtlFreeHeap(40350000,00000000,42cef188) ret=407bdbd0
005d:Ret  ntdll.RtlFreeHeap() retval=00000001 ret=407bdbd0
005d:Call ntdll.RtlEnterCriticalSection(40654b04) ret=405c1ee1
005d:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=405c1ee1
005d:Call ntdll.RtlLeaveCriticalSection(40654b04) ret=405c1f2e
005d:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=405c1f2e
005d:Call kernel32.ResetEvent(000000d4) ret=405bf4d0
005d:Call ntdll.NtResetEvent(000000d4,00000000) ret=404e45d8
005d:Ret  ntdll.NtResetEvent() retval=00000000 ret=404e45d8
005d:Ret  kernel32.ResetEvent() retval=00000001 ret=405bf4d0
005d:Call kernel32.WaitForSingleObject(000000cc,ffffffff) ret=405bf4e6
005d:Call
ntdll.NtWaitForMultipleObjects(00000001,435108a4,00000000,00000000,00000000)
ret=404e3dd1
005d:Ret  ntdll.NtWaitForMultipleObjects() retval=00000000 ret=404e3dd1
005d:Ret  kernel32.WaitForSingleObject() retval=00000000 ret=405bf4e6
005d:Call kernel32.GetCurrentProcess() ret=405bf4fd
005d:Ret  kernel32.GetCurrentProcess() retval=ffffffff ret=405bf4fd
005d:Call kernel32.GetCurrentThread() ret=405bf504
005d:Ret  kernel32.GetCurrentThread() retval=fffffffe ret=405bf504
005d:Call kernel32.GetCurrentProcess() ret=405bf50b
005d:Ret  kernel32.GetCurrentProcess() retval=ffffffff ret=405bf50b
005d:Call
kernel32.DuplicateHandle(ffffffff,fffffffe,ffffffff,43510ab8,00000010,00000000,00000000)
ret=405bf522
005d:Call
ntdll.NtDuplicateObject(ffffffff,fffffffe,ffffffff,43510ab8,00000010,00000000,00000000)
ret=404cda94
005d:Ret  ntdll.NtDuplicateObject() retval=00000000 ret=404cda94
005d:Ret  kernel32.DuplicateHandle() retval=00000001 ret=405bf522
005d:Call msvcrt.realloc(42d02040,00000050) ret=405bf547
005d:Call ntdll.RtlReAllocateHeap(40350000,00000000,42d02040,00000050)
ret=407bdc8f
005d:Ret  ntdll.RtlReAllocateHeap() retval=42d02040 ret=407bdc8f
005d:Ret  msvcrt.realloc() retval=42d02040 ret=405bf547
005d:Call kernel32.GetCurrentThreadId() ret=405bf58e
005d:Ret  kernel32.GetCurrentThreadId() retval=0000005d ret=405bf58e
005d:Call kernel32.ReleaseMutex(000000cc) ret=405bf5b4
005d:Call ntdll.NtReleaseMutant(000000cc,00000000) ret=404e47d3
005d:Ret  ntdll.NtReleaseMutant() retval=00000000 ret=404e47d3
005d:Ret  kernel32.ReleaseMutex() retval=00000001 ret=405bf5b4
005d:Call kernel32.SetEvent(00000184) ret=41d9b4a7
005d:Call ntdll.NtSetEvent(00000184,00000000) ret=404e4488
005d:Ret  ntdll.NtSetEvent() retval=00000000 ret=404e4488
005d:Ret  kernel32.SetEvent() retval=00000001 ret=41d9b4a7
005d:Call ntdll.RtlEnterCriticalSection(41dc78f8) ret=41d55164
005d:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=41d55164
005d:Call kernel32.lstrlenA(7c0f9d2a "") ret=41d55193
005d:Ret  kernel32.lstrlenA() retval=00000000 ret=41d55193
005d:Call ntdll.RtlEnterCriticalSection(41164de8) ret=4111a00c
005d:Ret  ntdll.RtlEnterCriticalSection() retval=00000000 ret=4111a00c
005d:Call ntdll.RtlLeaveCriticalSection(41164de8) ret=4111a044
005d:Ret  ntdll.RtlLeaveCriticalSection() retval=00000000 ret=4111a044
005d:Call ntdll.NtCreateEvent(43510648,001f0003,43510608,00000001,00000000)
ret=4049fb55
005d:Ret  ntdll.NtCreateEvent() retval=00000000 ret=4049fb55

All this is absolutely cryptic to me. Does anyone ge something from this
information? Is there any way to get to know where the aplication is
crashing?

Thank you. Sergio.




More information about the wine-devel mailing list