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

Reply via email to