[Vm-dev] LargePositiveInteger crash in testNumberOfDigits

Frank Shearar frank.shearar at gmail.com
Sun Mar 24 23:05:40 UTC 2013


It's not reproducible; we've just seen it crop up a handful of times
over the last few months. Sadly, the image will have been overwritten
by the next build.

frank

On 24 March 2013 18:19, Nicolas Cellier
<nicolas.cellier.aka.nice at gmail.com> wrote:
>
> Interesting...
> How can you tell it's in LargeIntegersPlugin though?
>
> Smalltalk stack indicates that you are in super fallback code already:
>
> Integer>>quo: aNumber
>         "Refer to the comment in Number quo: "
>         | ng quo |
>         aNumber isInteger ifTrue:
>                 [ng := self negative == aNumber negative == false.
>                 quo := (self digitDiv: aNumber neg: ng) at: 1.
>                 ^ quo normalize].
>         ^ aNumber adaptToInteger: self andSend: #quo:
>
> And the last sent primitives are strange, they do not reflect above
> code (nor Smalltalk fallback code of #digitDiv:neg: ...)
>
> Is it a reproducible behavior?
> What if we take the image produced by the build ?
>
> Nicolas
>
> 2013/3/22 Frank Shearar <frank.shearar at gmail.com>:
>>
>> http://build.squeak.org/job/SqueakTrunk/230/console shows a segfault
>> in the LargeIntegerPlugin, on Cog r.2701. I've attached the crash.dmp
>> because otherwise it'll potentially get overwritten by the next build.
>>
>> The interesting part of the stack is this:
>>
>> Squeak VM version: 4.0-2701 #1 Mon Mar 11 17:31:47 PDT 2013 gcc 4.1.2
>> Built from: CoInterpreter VMMaker.oscog-eem.272 uuid:
>> 8f4167f2-5bf0-4d90-9b7f-5355c741c68f Mar 11 2013
>> With: StackToRegisterMappingCogit VMMaker.oscog-eem.270 uuid:
>> 014f0153-bb02-49b7-b544-d8f3ac2deef6 Mar 11 2013
>> Revision: VM: r2701 http://www.squeakvm.org/svn/squeak/branches/Cog
>> Plugins: r2545 http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins
>> Build host: Linux mcqfes 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST
>> 2009 i686 i686 i386 GNU/Linux
>> plugin path: /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701
>> [default: /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/lib/squeak/4.0-2701/]
>>
>>
>> C stack backtrace:
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805cc81]
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805ce58]
>> [0xf57fe40c]
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x80e4049]
>> [0x773c4848]
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak(interpret+0x1eb)[0x807ff0b]
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak(main+0x397)[0x805d347]
>> /lib/i686/nosegneg/libc.so.6(__libc_start_main+0xe6)[0xb755dca6]
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805ad41]
>>
>>
>> Smalltalk stack dump:
>> 0xbfc501c4 M LargePositiveInteger(Integer)>quo: 0x788faa9c: a(n)
>> LargePositiveInteger
>> 0xbfc501e0 M LargePositiveInteger>quo: 0x788faa9c: a(n) LargePositiveInteger
>> 0xbfc50208 M LargePositiveInteger(Integer)>numberOfDigitsInBase:
>> 0x788faa9c: a(n) LargePositiveInteger
>> 0xbfc50238 M IntegerTest>testNumberOfDigits 0x788ad384: a(n) IntegerTest
>> <snip>
>> Most recent primitives
>> replaceFrom:to:with:startingAt:
>> normalize
>> +
>> digitSubtract:
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> normalize
>> -
>> digitAdd:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> digitMultiply:neg:
>> *
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> -
>> digitSubtract:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> +
>> digitAdd:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> normalize
>> +
>> digitSubtract:
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> normalize
>> -
>> digitAdd:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> digitMultiply:neg:
>> *
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> -
>> digitSubtract:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>>
>> frank
>>


More information about the Vm-dev mailing list