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 <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
On Sat, Aug 2, 2008 at 6:30 PM, Brian Fisher
<[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> 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
<[EMAIL PROTECTED]>