[Gc] GC + Windows Mobile + Threads + Patch for WINCE

biosli biosli at hotmail.com
Tue Aug 25 20:10:38 PDT 2009


Dear Ivan:

>>> 2. remove SMALL_CONFIG (remove also GC_GCJ_SUPPORT if defined) and define THREAD_LOCAL_ALLOC;
>> Case 2:
>> The test program crashed.
>> Data Abort: Thread=8e774824 Proc=8c398520 'test_libgcd_Wince.exe'
>> AKY=00040001 PC=000181bc(test_libgcd_Wince.exe+0x000081bc) RA=00017c34(test_libgcd_Wince.exe+0x00007c34) BVA=26d8fe60 FSR=00000007
>> Unhandled exception at 0x000181bc in test_libgcd_Wince.exe: 0xC0000005: Access violation reading location 0x00d8fe60.
>> The thread 'GC_win32_start' (0x4d84af6e) has exited with code -1073741819 (0xc0000005).
>> 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…
Test output:
Completed 6 tests
Allocated 789598 collectable objects
Allocated 1212 uncollectable objects
Allocated 0 atomic objects
Allocated 0 stubborn objects
Finalized 1818/1818 objects - finalization is probably ok
Total number of bytes allocated is 23943938
Final heap size is 14766080 bytes
Collector appears to work
I will do more test about this case.
 
Case 3:
> for (i = 0; i < 5; ++i) {
> check_ints(reverse(reverse(ints(1,10))), 1, 10);
> And try smaller values, say, 5 -> 3 and 10 -> 4. If it would work I'll set this values for VERY_SMALL_CONFIG case.
I do it as you said. The test passed.(define THREAD_LOCAL_ALLOC, GC_GCJ_SUPPORT)
Test output:
Received WM_CLOSE, closing window
The thread 'GC_win32_start' (0xeed729d6) has exited with code 0 (0x0).
Completed 6 tests
Allocated 791900 collectable objects
Allocated 1212 uncollectable objects
Allocated 0 atomic objects
Allocated 0 stubborn objects
Finalized 1828/1828 objects - finalization is probably ok
Total number of bytes allocated is 23892514
Final heap size is 15278080 bytes
Collector appears to work
> This happens to work but shouldn't (since case 2 failed).
I think you are right, case 3 crash some time…
And the backtrace same as case 2.


> PS. I've also made PARALLEL_MARK available on WinCE but it requires assembler AO_store() implemetation on ARM for VC++.
So far as I know, not all CPU with ARM supports assembler.
There is a link for help(http://msdn.microsoft.com/en-us/library/ms881415.aspx).
 
Best wishes,
GC Beginner
Zeyi Lee
 
_________________________________________________________________
上Windows Live 中国首页,下载最新版Messenger!
http://www.windowslive.cn
-------------- next part --------------
A non-text attachment was scrubbed...
Name: backtrace16.rar
Type: application/octet-stream
Size: 7753 bytes
Desc: not available
Url : http://napali.hpl.hp.com/pipermail/gc/attachments/20090826/79d9e73d/backtrace16.obj


More information about the Gc mailing list