Hi Damien,

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

On Fri, Mar 23, 2018 at 12:38 PM, Damien Pollet <damien.pollet@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


On 20 March 2018 at 18:17, Eliot Miranda <eliot.miranda@gmail.com> wrote:
 
Hi Damien,

On Tue, Mar 20, 2018 at 3:12 AM, Damien Pollet <damien.pollet@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