Hi Andreas, On Fri, May 25, 2018 at 1:24 AM, Andreas Brodbeck <dassi@mindclue.ch> wrote:
Hi all
I have a 6.0 image which crashes on garbage collect. If I run "Smalltalk garbageCollect" it crashes. The crash log is attached. But I don't really understand that crash log. I run it with a 6.0 VM, tried it also with newest 6.1 VM and 7.0 VM, but always the same error.
I read here in the list about crash problems with GC, memory leaks and similar, but I really don't see what I could do.
Note that if you build an Assert VM you will be able to manually patch the image in lldb so that you can rescue it. It looks like this: $ *lldb PharoAssert.app/Contents/MacOS/Pharo* (lldb) target create "/Users/eliot/oscogvm/build.macos64x64/pharo.cog.spur/ PharoAssert.app/Contents/MacOS/Pharo" Current executable set to '/Users/eliot/oscogvm/build. macos64x64/pharo.cog.spur/PharoAssert.app/Contents/MacOS/Pharo' (x86_64). (lldb) settings set -- target.run-args "clap_broken.d9e5daa.image" (lldb) *b warning* Breakpoint 1: 3 locations. (lldb) *run --leakcheck 31 clap_broken.d9e5daa.image* Process 31569 launched: '/Users/eliot/oscogvm/build. macos64x64/pharo.cog.spur/PharoAssert.app/Contents/MacOS/Pharo' (x86_64) object leak in *0x10f919658* @ 0 = 0x122216538 object leak in *0x10fbb3448* @ 0 = 0x122216760 object leak in *0x10fbb3480* @ 0 = 0x1222166a8 object leak in *0x10ff384f0* @ 0 = 0x122d480b0 object leak in *0x10ff38518* @ 0 = 0x122d480b0 object leak in *0x10ff385d0* @ 0 = 0x122d480b0 Process 31569 stopped * thread #1: tid = 0x5b6d56, 0x0000000100001a83 Pharo`warning(s=" checkHeapIntegrityclassIndicesShouldBeValid(0, 1) 57196") + 19 at gcc3x-cointerp.c:44, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 frame #0: 0x0000000100001a83 Pharo`warning(s=" checkHeapIntegrityclassIndicesShouldBeValid(0, 1) 57196") + 19 at gcc3x-cointerp.c:44 41 sqInt warnpid, erroronwarn; 42 void 43 warning(char *s) { /* Print an error message but don't necessarily exit. */ -> 44 if (erroronwarn) error(s); 45 if (warnpid) 46 printf("\n%s pid %ld\n", s, (long)warnpid); 47 else (lldb) *call freeObject(0,0x10f919658)* (sqInt) $0 = 4478138592 (lldb) *call **freeObject**(0,0x10fbb3448)* (sqInt) $1 = 4478138592 (lldb) *call **freeObject**(0,0x10fbb3480)* (sqInt) $2 = 4478138592 (lldb) *call **freeObject**(0,0x10ff384f0)* (sqInt) $3 = 4478138592 (lldb) *call **freeObject**(0,0x10ff38518)* (sqInt) $4 = 4478138592 (lldb) *call **freeObject**(0,0x10ff385d0)* (sqInt) $5 = 4478138592 (lldb) *expr checkForLeaks = 0* (sqInt) $0 = 0 (lldb) *continue* and then save the image.
Any pointers in which direction I could investigate?
Thanks and cheers, Andreas
-- Andreas Brodbeck www.mindclue.ch
-- _,,,^..^,,,_ best, Eliot