Re: [Gc] GC + Windows Mobile + Threads + Patch for WINCE
ivmai at mail.ru
Wed Aug 26 08:55:27 PDT 2009
Today I wrote:
> > There is another backtrace for you.(I send a attachment)
> At present there is 2 differences between true Win32 and WinCE - GC_get_stack_min() and GC_win32_get_mem/GC_wince_get_mem().
> So, my questions:
> 0. just a general one - you are running single-core ARM, right?
> 1. are stacks (on your target) restricted to an aligned 64K region?
Discard the Q about stacks (GC_get_stack_min() is used only to verify stack boundaries, in fact).
Zeyi Lee <biosli at hotmail.com> wrote:
>>> The test program crashed.
>>> Unhandled exception at 0x000181bc in test_libgcd_Wince.exe: 0xC0000005: Access violation reading location 0x00d8fe60.
>>> In win32 the test program works well.
>> Here is some problem. Could you run it under debugger (if that isn't difficult for you) and tell me backtrace where SEGV occurs?
> It happens at called GC_gcollect(), and the call stack stopped at GC_mark_from().
> Line: 835 current = *(word *)current_p; or Line: 810 deferred = *(word *)limit;
> (I send a attachment of backtrace pic. I hope it is helpful.)
> And I found it is not crash every time.
I think I found the solution: in mark.c search for "ifndef __GNUC__" and temporarily replace previous "ifdef MSWIN32" to "defined(MSWIN32) || defined(MSWINCE)" and retry the cases 2 and 3 with temporarily added -DWRAP_MARK_SOME.
If that works, I'll prepare the proper patch.
More information about the Gc