[Python-Dev] another dict crasher
Michael Hudson
mwh@python.net
Tue, 5 Jun 2001 09:39:24 +0100 (BST)
Haven't run your example yet as my machine's not on at the moment.
On Tue, 5 Jun 2001, Tim Peters wrote:
> However, if I stick "print self.i" at the start of __eq__, it dies
> with a KeyError instead! That's why I'm mentioning it -- could be the
> same misdirection you're seeing. I can't account for the KeyError in
> any rational way: under Windows, it's actually hitting a stack
> overflow in the bowels of the system malloc() then.
Hmm. It's quite likely that PyMem_Malloc (or whatever) crapping out and
returning NULL will get turned into a MemoryError, which will then get
turned into a KeyError, isn't it? I could believe that malloc would set
up some fancy sigsegv-type handlers for memory management purposes which
then get called when it tramples all over the end of the stack. But I'm
making this up as I go along...
> Windows "recovers" from that and presses on. Everything that happens
> after appears to be an accident.
>
> win98-as-usual-ly y'rs - tim
Well, linux seems to be similarly inscrutable here. One problem is that
this is a pig to run under the debugger - setting a breakpoint on lookdict
isn't terribly interesting way to spend your time. I suppose you could
just set the breakpoint on the recursive call... later.
> PS: You'll be tested on this, too <wink>.
Oh, piss off <wink>.
Cheers,
M.