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