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

Re: [pygame] Font-Related Segfault



Okay:
I wrote the string (self.parts['font']) out to a temporary file and
diff'd it against the original file, and they are identical.
Pygame successfully loads the font from the temporary file, and the
font works normally. However I would definitely like to
find a less kludgish solution to the problem.

The particular font does not appear to matter, or at least, a wide
variety of truetype fonts are affected - I can't load Junius Unicode
or Free Serif from a StringIO either, but I can load them from files.

It worked about six to eight months ago. Sorry I can't be more
specific - I sort of mothballed the project for a while.

Sorry I didn't provide a "demonstration program" I will try to keep
that in mind in the future.

- Bryce


On Mon, Nov 23, 2009 at 2:05 PM, Brian Fisher <brian@xxxxxxxxxxxxxxxxxxx> wrote:
> Pygame should be supporting a file-like object no problem, so this seems
> like it could be a bug.
>
> Can you be more specific on when in the past it worked, and what happened
> between then and when it segfaults now?
>
> Also, it's not clear from your problem description whether the problem is
> that pygame crashes when loading from a file-like object, or if pygame
> crashes on a specific set of font data.
>
> So I would suggest doing a sanity check here by writing the
> self.parts['font'] string to a temp file, and trying to load from that, as a
> way of being able to determine if the crash is caused by the file-like
> object reading, or by some problem with the contents of the file-like
> object.
>
> So something like:
> ------------
> class Font(Resource):
>  ....
>   def pygame_font(self,size):
>       file(temp_file_name, "w").write(self.parts['font'])
>       return pygame.font.Font(temp_file_name, size)
>       os.unlink(temp_file_name)
> ------------
> If that still crashes, then pygame has trouble with that font content, and
> then the question would be to figure out what about that font content is
> causing problems. If that doesn't crash, then the problem would be with
> accessing the content as a file-like object.
>
>
> ... finally, as general advice to all people posting problems - if you can
> send a completely self-contained reproducible case, then you are much more
> likely to get good help and results faster. As an example in this case,
> providing the contents of the self.parts['font'] string in an attached file
> with a simple script that tries to load from a StringIO using that file's
> contents, would make this easily reproducible and testable by fellow mailing
> listers - but without knowing what the contents of the string in question
> are, it may actually be practically impossible for anyone else to test
> themselves.
>
>
> On Mon, Nov 23, 2009 at 12:38 PM, Bryce Schroeder
> <bryce.schroeder@xxxxxxxxx> wrote:
>>
>> (My apologies if this is a double-post. I didn't get a copy of the
>> message or see it in the archive, so I'm trying again.)
>>
>>  I have a pygame program that worked in the past on both Linux and
>> Windows, but now results in a segfault, at least on Linux.  (I can't
>> test it on Windows.)
>> The segfault occurs in this code:
>>
>> class Font(Resource):
>>  ....
>>   def pygame_font(self,size):
>>       return pygame.font.Font(StringIO.StringIO(self.parts['font']),
>> size) # Segfaults here
>>
>>
>> self.parts['font'] is a string containing a truetype font loaded from
>> a file. I have checked that the string contains the file like it is
>> supposed too. Any suggestions?
>
>