Hi Andreas, On Fri, May 25, 2018 at 1:24 AM, Andreas Brodbeck <da...@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