[Vm-dev] Reproducible VM crash from commit 4749358 onwards

Alistair Grant akgrant0710 at gmail.com
Thu Mar 15 21:43:09 UTC 2018


Hi Everyone,

If I download a recent Pharo 64 bit image, e.g.:

http://files.pharo.org/image/70/latest-64.zip

And use a Pharo VM from commit:

commit 4749358b5717b9a2f7e1d44f9baac48ed5d80431
Author: Eliot Miranda <eliot.miranda at gmail.com>
Date:   Wed Mar 7 15:11:21 2018 -0800

or later, the following will reliably crash the VM:


./pharo Pharo7.0-64bit-a26248b.image eval "OCBytecodeGeneratorTest
run: #testExample2"


Earlier VMs don't crash.

Stack dump below my signature.

I'm a bit out of my depth beyond that...

OS: Ubuntu 16.04 64 bit


Cheers,
Alistair


Segmentation fault Thu Mar 15 22:39:13 2018


/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo
Pharo VM version: 5.0-201803072311  Thursday 15 March  22:35:05 CET
2018 c99 [Production Spur 64-bit VM]
Built from: CoInterpreter VMMaker.oscog-eem.2347 uuid:
062614a7-e3da-4b30-997a-9568911b9ff5 Mar 15 2018
With: StackToRegisterMappingCogit VMMaker.oscog-eem.2347 uuid:
062614a7-e3da-4b30-997a-9568911b9ff5 Mar 15 2018
Revision: VM: 201803072311
alistair at 59fbe1b42048:vmmaker/opensmalltalk-vm $ Date: Wed Mar 7
15:11:21 2018 -0800 $ Plugins: 201803072311
alistair at 59fbe1b42048:vmmaker/opensmalltalk-vm $
Build host: Linux 59fbe1b42048 4.13.0-36-generic #40~16.04.1-Ubuntu
SMP Fri Feb 16 23:25:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
plugin path: /home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311
[default: /home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/]


C stack backtrace & registers:
rax 0x13ab4880 rbx 0x13ab4710 rcx 0x13ab4938 rdx 0x13ab47c8
rdi 0x13ab44e8 rsi 0x13ab44e8 rbp 0x13ab4658 rsp 0x13ab49f0
r8  0x13ab3f28 r9  0x13ab3fe0 r10 0x13ab4098 r11 0x13ab4150
r12 0x13ab4208 r13 0x13ab42c0 r14 0x13ab4378 r15 0x13ab4430
rip 0x13ab4aa8
*[0x7ffd13ab4aa8]
/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo[0x41aca2]
/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo[0x41c87e]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f78ad605390]
/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo(lengthOf+0x0)[0x42aca0]
/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo(cogselector+0x27)[0x49bf77]
/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo[0x45b15c]
/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo[0x45b444]
/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo(interpret+0xb238)[0x469208]
/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo[0x46a4db]
/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo(interpret+0x246)[0x45e216]
/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo(main+0x2f8)[0x419f98]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f78acf41830]
/home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201803072311/pharo(_start+0x29)[0x41a309]
[0x0]


Smalltalk stack dump:
    0x7ffd13ad4550 I CompiledMethod>valueWithReceiver:arguments:
0x1d7e790: a(n) CompiledMethod
    0x7ffd13ad45a0 M OCBytecodeGeneratorTest>testExample2 0x1d78910:
a(n) OCBytecodeGeneratorTest
    0x7ffd13ad1ea0 I OCBytecodeGeneratorTest(TestCase)>performTest
0x1d78910: a(n) OCBytecodeGeneratorTest
    0x7ffd13ad1ed0 M [] in OCBytecodeGeneratorTest(TestCase)>runCase
0x1d78910: a(n) OCBytecodeGeneratorTest
    0x7ffd13ad1f10 M BlockClosure>ensure: 0x1d7a450: a(n) BlockClosure
    0x7ffd13ad1f58 I OCBytecodeGeneratorTest(TestCase)>runCase
0x1d78910: a(n) OCBytecodeGeneratorTest
    0x7ffd13ad1f90 M [] in
TestExecutionEnvironment>runTestCaseSafelly: 0x1d78f28: a(n)
TestExecutionEnvironment
    0x7ffd13ad1fc0 M BlockClosure>on:do: 0x1d7a330: a(n) BlockClosure
    0x7ffd13ad2008 M [] in
TestExecutionEnvironment>runTestCaseSafelly: 0x1d78f28: a(n)
TestExecutionEnvironment
    0x7ffd13ad2038 M BlockClosure>on:do: 0x1d7a1a8: a(n) BlockClosure
    0x7ffd13ad2088 I TestExecutionEnvironment>runTestCaseSafelly:
0x1d78f28: a(n) TestExecutionEnvironment
    0x7ffd13ad20c8 M [] in TestExecutionEnvironment>runTestCase:
0x1d78f28: a(n) TestExecutionEnvironment
    0x7ffd13ad2108 M BlockClosure>ensure: 0x1d7a0a8: a(n) BlockClosure
    0x7ffd13ad2148 M [] in TestExecutionEnvironment>runTestCase:
0x1d78f28: a(n) TestExecutionEnvironment
    0x7ffd13ad2188 M BlockClosure>ifCurtailed: 0x1d79fa8: a(n) BlockClosure
    0x7ffd13ad21d0 I TestExecutionEnvironment>runTestCase: 0x1d78f28:
a(n) TestExecutionEnvironment
    0x7ffd13ad2218 M [] in DefaultExecutionEnvironment>runTestCase:
0x23f7c30: a(n) DefaultExecutionEnvironment
    0x7ffd13ad2258 M [] in CurrentExecutionEnvironment
class>activate:for: 0x2404bf8: a(n) CurrentExecutionEnvironment class
    0x7ffd13ad2298 M BlockClosure>ensure: 0x1d79280: a(n) BlockClosure
    0x7ffd13ad22e8 I CurrentExecutionEnvironment class>activate:for:
0x2404bf8: a(n) CurrentExecutionEnvironment class
    0x7ffd13ad2338 I
TestExecutionEnvironment(ExecutionEnvironment)>beActiveDuring:
0x1d78f28: a(n) TestExecutionEnvironment
    0x7ffd13ad2388 I DefaultExecutionEnvironment>runTestCase:
0x23f7c30: a(n) DefaultExecutionEnvironment
    0x7ffd13ad23d0 I CurrentExecutionEnvironment class>runTestCase:
0x2404bf8: a(n) CurrentExecutionEnvironment class
    0x7ffd13ad2418 I OCBytecodeGeneratorTest(TestCase)>runCaseManaged
0x1d78910: a(n) OCBytecodeGeneratorTest
    0x7ffd13ad2450 M [] in TestResult>runCase: 0x1d78930: a(n) TestResult
    0x7ffd13ad2480 M BlockClosure>on:do: 0x1d78d50: a(n) BlockClosure
    0x7ffd13ad24d0 I TestResult>runCase: 0x1d78930: a(n) TestResult
    0x7ffd13ad2510 M [] in OCBytecodeGeneratorTest(TestCase)>run
0x1d78910: a(n) OCBytecodeGeneratorTest
    0x7ffd13ad2550 M BlockClosure>ensure: 0x1d78c50: a(n) BlockClosure
    0x7ffd13ad25a0 I OCBytecodeGeneratorTest(TestCase)>run 0x1d78910:
a(n) OCBytecodeGeneratorTest
    0x7ffd13ad0100 I OCBytecodeGeneratorTest class(TestCase
class)>run: 0x36155c8: a(n) OCBytecodeGeneratorTest class
    0x7ffd13ad0138 M UndefinedObject>DoIt 0x23e78e0: a(n) UndefinedObject
    0x7ffd13ad0198 I OpalCompiler>evaluate 0x1c76f90: a(n) OpalCompiler
    0x7ffd13ad01d8 I OpalCompiler(AbstractCompiler)>evaluate:
0x1c76f90: a(n) OpalCompiler
    0x7ffd13ad0220 M [] in EvaluateCommandLineHandler>evaluate:
0x1c770e8: a(n) EvaluateCommandLineHandler
    0x7ffd13ad0250 M BlockClosure>on:do: 0x1c77118: a(n) BlockClosure
    0x7ffd13ad02a8 I EvaluateCommandLineHandler>evaluate: 0x1c770e8:
a(n) EvaluateCommandLineHandler
    0x7ffd13ad02f8 I EvaluateCommandLineHandler>evaluateArguments
0x1c770e8: a(n) EvaluateCommandLineHandler
    0x7ffd13ad0338 I EvaluateCommandLineHandler>activate 0x1c770e8:
a(n) EvaluateCommandLineHandler
    0x7ffd13ad0378 I EvaluateCommandLineHandler
class(CommandLineHandler class)>activateWith: 0x252d400: a(n)
EvaluateCommandLineHandler class
    0x7ffd13ad03b8 M [] in
PharoCommandLineHandler(BasicCommandLineHandler)>activateSubCommand:
0x55380b8: a(n) PharoCommandLineHandler
    0x7ffd13ad03e8 M BlockClosure>on:do: 0x1c77390: a(n) BlockClosure
    0x7ffd13ad0428 M
PharoCommandLineHandler(BasicCommandLineHandler)>activateSubCommand:
0x55380b8: a(n) PharoCommandLineHandler
    0x7ffd13ad0478 I
PharoCommandLineHandler(BasicCommandLineHandler)>handleSubcommand
0x55380b8: a(n) PharoCommandLineHandler
    0x7ffd13ad04b8 I
PharoCommandLineHandler(BasicCommandLineHandler)>handleArgument:
0x55380b8: a(n) PharoCommandLineHandler
    0x7ffd13ad04f0 M [] in
PharoCommandLineHandler(BasicCommandLineHandler)>activate 0x55380b8:
a(n) PharoCommandLineHandler
    0x7ffd13ad0520 M BlockClosure>on:do: 0x1c77628: a(n) BlockClosure
    0x7ffd13ad0560 M [] in
PharoCommandLineHandler(BasicCommandLineHandler)>activate 0x55380b8:
a(n) PharoCommandLineHandler
    0x7ffd13ad05a0 I [] in BlockClosure>newProcess 0x1c77720: a(n) BlockClosure

Most recent primitives
stringHash:initialHash:
basicNew
successorSequences
basicNew
basicNew
basicNew
**StackOverflow**
basicNew
basicNew
basicIdentityHash
basicNew
basicNew
stringHash:initialHash:
stringHash:initialHash:
stringHash:initialHash:
literal
parameterAt:
stringHash:initialHash:
isInteger
stringHash:initialHash:
stringHash:initialHash:
size
findSubstring:in:startingAt:matchTable:
indexOfAscii:inString:startingAt:
indexOfAscii:inString:startingAt:
stringHash:initialHash:
stringHash:initialHash:
*
*
size
size
copyWith:
bitShift:
bitShift:
numTemps
numTemps
numTemps
numTemps
numTemps
numTemps
basicIdentityHash
basicNew:
size
basicNew
at:put:
at:put:
basicNew:
stringHash:initialHash:
compare:with:collated:
perform:
encodeNoTrailer
encodeNoTrailer
encodeNoTrailer
encodeNoTrailer
encodeNoTrailer
encodeNoTrailer
encodeNoTrailer
at:put:
at:put:
at:put:
at:put:
basicNew
size
at:put:
at:put:
at:put:
at:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
collect:
basicNew
bitAnd:
**PrimitiveFailure**
bitAnd:
**PrimitiveFailure**
bitOr:
**PrimitiveFailure**
bitOr:
**PrimitiveFailure**
bitClear:
new:
objectAt:
at:put:
objectAt:
at:put:
objectAt:
at:put:
objectAt:
at:put:
objectAt:
at:put:
objectAt:put:
stringHash:initialHash:
objectAt:put:
withArgs:executeMethod:
basicNew
class
basicNew
primUTCMicrosecondsClock
*
**PrimitiveFailure**
digitMultiply:neg:
basicNew
primOffset
digitCompare:
//
\\
valueNoContextSwitch
class
class
basicNew
class
class
value
class
**StackOverflow**
basicIdentityHash
basicNew
basicNew
basicNew
new:
valueNoContextSwitch
size
new:
size
size
at:put:
basicNew:
stackp:
basicNew
size
at:
at:
at:
at:
psValueAt:put:
psValueAt:put:
psValueAt:put:
psValueAt:put:
psValueAt:put:
primitiveResume
repeat
wait
class
millisecondClockValue
basicNew
signal
primUTCMicrosecondsClock
millisecondDelayDuration
+
primSignal:atUTCMicroseconds:
wait
wait
class
signal
basicNew
valueNoContextSwitch
signal
primUTCMicrosecondsClock
at:put:
at:
at:put:
primSignal:atUTCMicroseconds:
wait
wait
valueNoContextSwitch
wait
ifCurtailed:
basicNew
value
class
valueNoContextSwitch
perform:
**StackOverflow**
basicNew
basicNew
basicNew
basicIdentityHash
**StackOverflow**
**StackOverflow**
size
indexOfAscii:inString:startingAt:
at:
at:
at:
basicIdentityHash
value
class
linkTo:
basicNew
value
basicIdentityHash
stringHash:initialHash:
stringHash:initialHash:
size
stringHash:initialHash:
stringHash:initialHash:
basicNew
-
class
new:
at:put:
perform:withArguments:
from:if:goto:otherwise:
size
size
size
at:
~=
size
at:put:
basicNew:
stringHash:initialHash:
compare:with:collated:
newMethod:header:
at:put:
at:put:
at:put:
at:put:
basicNew
size
size
size
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
at:put:
objectAt:put:
objectAt:put:
objectAt:put:
objectAt:put:
from:if:goto:otherwise:
from:if:goto:otherwise:
from:if:goto:otherwise:
objectAt:put:
new:
objectAt:
at:put:
objectAt:
at:put:
objectAt:
at:put:
objectAt:
at:put:
class
@
withArgs:executeMethod:

stack page bytes 8192 available headroom 5576 minimum unused headroom 6032

(Segmentation fault)


More information about the Vm-dev mailing list