segfault/massive memory use when using Data.Bits.shiftL

Remi Turk rturk at science.uva.nl
Mon Feb 28 18:18:26 EST 2005


On Mon, Feb 28, 2005 at 10:59:32PM +0000, Ganesh Sittampalam wrote:
> On Mon, 28 Feb 2005, Remi Turk wrote:
> 
> > On Mon, Feb 28, 2005 at 02:55:56PM +0000, Ganesh Sittampalam wrote:
> > >
> > > Prelude> :m +Data.Bits
> > > Prelude Data.Bits> 18446658724119492593 `shiftL` (-3586885994363551744) ::
> > > Integer
> >
> > and calculating, in your case, 2^3586885994363551744 is not
> > something your computer is going to like...
> > as it's probably a number which doesn't fit in our universe :)
> 
> Hmm, good point. I hadn't thought about the fact that the number of digits
> in the answer would be rather large...
Actually, the final answer will be 0: It's only the intermediate
value that gets ridiculously large.

> > Still, a segfault might point at a bug, which I unfortunately
> > won't be able to say much about. (Due to lack of knowledge &
> > information.)
> 
> My googling suggests that gmp is prone to segfaulting when things get too
> large for it, so I'll just chalk it up to that.
> 
> I apologise for thinking this was a bug :-)

No need to apologize. Segfaults _are_ IMHO almost always bugs.
And in this case too, though the fault isn't GHCs.

Groeten,
Remi

> Cheers,
> 
> Ganesh

-- 
Nobody can be exactly like me. Even I have trouble doing it.


More information about the Glasgow-haskell-users mailing list