[Vm-dev] LargePositiveInteger crash in testNumberOfDigits

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Sun Mar 24 18:19:31 UTC 2013


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