[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Another blitting surface to itself crash



Like previous segfault bugs this one may not be Windows specific. Windows is just more sensitive to invalid memory accesses. Here's what happened when I ran the test case interatively:

Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
>>> pygame.init()
(6, 0)
>>> a = pygame.Surface((10,10))
>>> a.blit(a, (0, 0))
Fatal Python error: Inconsistent interned string state.


Not a Pygame parachute but a Python integrity check failure. It all depends on where the surface memory is allocated relative to everything else. A backtrace of the stack won't help here as the damage was done before the error was detected. And it is unclear that the bug is SDL 1.2.13 specific. SDL 1.2.13 may simple contribute to the conditions that make the bug obvious.

Lenard


Brian Fisher wrote:
Thanks Hugo.

So the crash when blitting a surface to itself is in SDL, and it doesn't seem to happen with SDL 1.2.5 or SDL 1.2.7 (you can actually run pygame 1.8.1 over those versions, you just have to ignore the function not found message boxes). no SDL bug for this exists, at the moment.

I haven't tried debugging what's happening in SDL yet, because I'm not currently set up to build SDL., so if anyone equipped to do some SDL debugging of this (I believe it's a windows only problem) would be interested, I would appreciate them investigating this

-------------------
I would try looking at a crash minidmp (do the cygwin dependency builds have pdb files or some other debug symbols?), except this is one of those pygame parachute things that don't seem to actually crash and have the os make a minidump... does anybody know if there is a way to disable the pygame parachute thing and get an actual crash?


On Sat, Aug 2, 2008 at 3:32 PM, Hugo Arts <hugo.yoshi@xxxxxxxxx <mailto:hugo.yoshi@xxxxxxxxx>> wrote:

    On Sat, Aug 2, 2008 at 6:30 PM, Brian Fisher
    <brian@xxxxxxxxxxxxxxxxxxx <mailto:brian@xxxxxxxxxxxxxxxxxxx>> wrote:
    > There's another instance of blitting a surface to itself
    crashing on Windows
    > for a user, it's believed to be a 1.8.1 thing by the poster
    > http://pygame.motherhamster.org/bugzilla/show_bug.cgi?id=19
    >
    > last time it came up marcus was thinking about making pygame
    throw an
    > exception on blitting a surface to itself, which still seems
    like a decent
    > solution to me. Anybody know any more background?
    >

    I was the one who submitted the bug last time. At the time there was
    some resistance to the exception solution, since scrolling was seen as
    a valid reason to blit surfaces onto themselves, as well as a certain
    meltdown effect.

    There is an easy workaround available (just copy the surface), but no
    fix. As far as I could tell, the bug occurs only on windows.

    We never got into the cause of the bug, the thread died down without
    any real bug hunting done. I have no idea what could be causing this.
    At the time I wrote this minimal script to reproduce, works also in
    interactive mode:

    import pygame
    pygame.init()

    a = pygame.Surface((10, 10))
    a.blit(a, (0, 0))

    Output:
    Fatal Python error: (pygame parachute) Segmentation Fault


    That's about all I know.

    Hugo




--
Lenard Lindstrom
<len-l@xxxxxxxxx>