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

Re: [pygame] Font-Related Segfault



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?