[Vm-dev] Image crashing on startup, apparently during GC

Eliot Miranda eliot.miranda at gmail.com
Fri Mar 23 22:02:00 UTC 2018


Hi Damien,

On Fri, Mar 23, 2018 at 1:52 PM, Eliot Miranda <eliot.miranda at gmail.com>
wrote:

> Hi Damien,
>
> On Fri, Mar 23, 2018 at 12:38 PM, Damien Pollet <damien.pollet at gmail.com>
> wrote:
>
>>
>> Here are the files (image and various outputs). Running with --leakcheck
>> does mention a few object leaks (see output.txt);
>>
>
> Indeed the image is corrupt at start-up.  See below.
>
>
>> I'm not sure where to get or how to build an assert VM.
>>
>
> When you build a phar. VM under build.macos64x64/pharo.cog.spur using the
> mvm script (mvm -A) you produce an assert VM in PharoAssert.app.
>

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 storePointerUncheckedofObjectwithValue(0,0x10f919658,nilObj)*
(sqInt) $0 = 4478138592
(lldb) *call storePointerUncheckedofObjectwithValue(0,0x10fbb3448,nilObj)*
(sqInt) $1 = 4478138592
(lldb) *call storePointerUncheckedofObjectwithValue(0,0x10fbb3480,nilObj)*
(sqInt) $2 = 4478138592
(lldb) *call storePointerUncheckedofObjectwithValue(0,0x10ff384f0,nilObj)*
(sqInt) $3 = 4478138592
(lldb) *call storePointerUncheckedofObjectwithValue(0,0x10ff38518,nilObj)*
(sqInt) $4 = 4478138592
(lldb) *call storePointerUncheckedofObjectwithValue(0,0x10ff385d0,nilObj)*
(sqInt) $5 = 4478138592
(lldb) *expr checkForLeaks = 0*
(sqInt) $0 = 0
(lldb) *c*


and then save the image.


>
>> I also realized the VM I had was from this summer (the one that comes
>> with a 70 image with zeroconf). The output files I include were produced by
>> the VM at get.pharo.org/64/vmLatest70
>>
>> https://www.dropbox.com/s/y8yqjuzd9nsvy1u/clap-broken.tar.gz?dl=0
>>
>> On 20 March 2018 at 18:17, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>>
>>>
>>> Hi Damien,
>>>
>>> On Tue, Mar 20, 2018 at 3:12 AM, Damien Pollet <damien.pollet at gmail.com>
>>> wrote:
>>>
>>>>
>>>> Hi, I have a Pharo image that crashes the VM on startup. The crash
>>>> report below seems to incriminate GC. Should I make it available somewhere
>>>> online? What's most convenient?
>>>>
>>>
>>> Don't care.  Anywhere it can be downloaded from.  Also, try running with
>>> -leakcheck 15, preferably in an assert VM and see if that gets you
>>> additional information.
>>>
>>>
>>>>
>>>> Process:               Pharo [64892]
>>>> Path:                  /Users/USER/*/Pharo.app/Contents/MacOS/Pharo
>>>> Identifier:            org.pharo.Pharo
>>>> Version:               5.0.201708271955 (5.0.201708271955)
>>>>
>>>
> Right.  This VM is prior to the bug fixes in VMMaker.oscog-eem.2320:
>
> Spur:
> Fix a bad bug in SpurPlnningCompactor.  unmarkObjectsFromFirstFreeObject,
> used when the compactor requires more than one pass due to insufficient
> savedFirstFieldsSpace, expects the corpse of a moved object to be unmarked,
> but copyAndUnmarkObject:to:bytes:firstField: only unmarked the target.
> Unmarking the corpse before the copy unmarks both.  This fixes a crash with
> ReleaseBuilder class>>saveAsNewRelease when non-use of cacheDuring: creates
> lots of files, enough to push the system into the multi-pass regime.
>
>
> Pharo urgently needs to upgrade the VM to one more up to date than 2017 08
> 27 (in fact more up-to-date than opensmalltalk/vm commit
> 0fe1e1ea108e53501a0e728736048062c83a66ce, Fri Jan 19 13:17:57 2018
> -0800).  The bug that VMMaker.oscog-eem.2320 fixes can result in image
> corruption in large images, and can occur (as it has here) at start-up,
> causing one's work to be irretrievably lost.
>
>
>> Code Type:             X86-64 (Native)
>>>> Parent Process:        ??? [64888]
>>>> Responsible:           Pharo [64892]
>>>> User ID:               501
>>>>
>>>> Date/Time:             2018-03-19 20:27:03.906 +0100
>>>> OS Version:            Mac OS X 10.13.3 (17D102)
>>>> Report Version:        12
>>>> Anonymous UUID:        6D022236-78DD-6676-117F-EADA56D5D1BE
>>>>
>>>> Sleep/Wake UUID:       AC9E4E55-3CDB-4B4F-A6B4-51ACB1177154
>>>>
>>>> Time Awake Since Boot: 28000 seconds
>>>> Time Since Wake:       6500 seconds
>>>>
>>>> System Integrity Protection: enabled
>>>>
>>>> Crashed Thread:        0  Dispatch queue: com.apple.main-thread
>>>>
>>>> Exception Type:        EXC_BAD_ACCESS (SIGABRT)
>>>> Exception Codes:       KERN_INVALID_ADDRESS at 0x000000012b67c0b0
>>>> Exception Note:        EXC_CORPSE_NOTIFY
>>>>
>>>> VM Regions Near 0x12b67c0b0:
>>>>    VM_ALLOCATE            000000011adfc000-00000001259fc000 [172.0M]
>>>> rw-/rwx SM=PRV
>>>> -->
>>>>    STACK GUARD            0000700005613000-0000700005614000 [    4K]
>>>> ---/rwx SM=NUL  stack guard for thread 1
>>>>
>>>> Application Specific Information:
>>>> abort() called
>>>>
>>>> Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
>>>> 0   libsystem_kernel.dylib         0x00007fff53fbde3e __pthread_kill +
>>>> 10
>>>> 1   libsystem_pthread.dylib        0x00007fff540fc150 pthread_kill + 333
>>>> 2   libsystem_c.dylib              0x00007fff53f1a312 abort + 127
>>>> 3   org.pharo.Pharo                0x0000000104ed8997 sigsegv + 190
>>>> 4   libsystem_platform.dylib       0x00007fff540eff5a _sigtramp + 26
>>>> 5   ???                            000000000000000000 0 + 0
>>>> 6   org.pharo.Pharo                0x0000000104e73558 markObjects + 464
>>>> 7   org.pharo.Pharo                0x0000000104e72d40 fullGC + 72
>>>> 8   org.pharo.Pharo                0x0000000104e92dea primitiveFullGC +
>>>> 45
>>>> 9   org.pharo.Pharo                0x0000000104e52425 interpret + 26715
>>>> 10  org.pharo.Pharo                0x0000000104e5c7f6
>>>> enterSmalltalkExecutiveImplementation + 152
>>>> 11  org.pharo.Pharo                0x0000000104e4be6c interpret + 674
>>>> 12  org.pharo.Pharo                0x0000000104ed9cc1
>>>> -[sqSqueakMainApplication runSqueak] + 394
>>>> 13  com.apple.Foundation           0x00007fff2e6d696c
>>>> __NSFirePerformWithOrder + 360
>>>> 14  com.apple.CoreFoundation       0x00007fff2c579127
>>>> __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
>>>> 15  com.apple.CoreFoundation       0x00007fff2c57904f
>>>> __CFRunLoopDoObservers + 527
>>>> 16  com.apple.CoreFoundation       0x00007fff2c55b6a8 __CFRunLoopRun +
>>>> 1240
>>>> 17  com.apple.CoreFoundation       0x00007fff2c55af43
>>>> CFRunLoopRunSpecific + 483
>>>> 18  com.apple.HIToolbox            0x00007fff2b872e26
>>>> RunCurrentEventLoopInMode + 286
>>>> 19  com.apple.HIToolbox            0x00007fff2b872a9f
>>>> ReceiveNextEventCommon + 366
>>>> 20  com.apple.HIToolbox            0x00007fff2b872914
>>>> _BlockUntilNextEventMatchingListInModeWithFilter + 64
>>>> 21  com.apple.AppKit               0x00007fff29b3df5f _DPSNextEvent +
>>>> 2085
>>>> 22  com.apple.AppKit               0x00007fff2a2d3b4c
>>>> -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]
>>>> + 3044
>>>> 23  com.apple.AppKit               0x00007fff29b32d6d -[NSApplication
>>>> run] + 764
>>>> 24  com.apple.AppKit               0x00007fff29b01f1a NSApplicationMain
>>>> + 804
>>>>
>>>> --
>>>> Damien Pollet
>>>> type less, do more [ | ] http://people.untyped.org/damien.pollet
>>>>
>>>>
>>>
>>>
>>> --
>>> _,,,^..^,,,_
>>> best, Eliot
>>>
>>>
>>
>>
>> --
>> Damien Pollet
>> type less, do more [ | ] http://people.untyped.org/damien.pollet
>>
>>
>
>
> --
> _,,,^..^,,,_
> best, Eliot
>



-- 
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20180323/f4d1ff7b/attachment.html>


More information about the Vm-dev mailing list