• Status Closed
  • Percent Complete
  • Task Type Bugs
  • Category Infrastructure → Build environment
  • Assigned To No-one
  • Operating System All players
  • Severity Low
  • Priority Very Low
  • Reported Version
  • Due in Version Undecided
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: Rockbox
Opened by Anonymous Submitter - 2006-03-30
Last edited by bagder - 2007-07-31

FS#4955 - convbdf segfaults on very large fonts

When running convbdf on large files, it segfaults. By littering the source with printfs, I’ve narrowed it down to that the segfault happens in writestr(), and it’s being called from line 1071 (writestr(ofp, (char *)bytemap, size);), whatever that means.

The following is an example of a file that causes convbdf to segfault:*checkout*/xorg/xc/fonts/bdf/100dpi/UTB___24.bdf

Closed by  bagder
2007-07-31 09:43
Reason for closing:  Fixed
Additional comments about closing:   Warning: Undefined array key "typography" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 371 Warning: Undefined array key "camelcase" in /home/rockbox/flyspray/plugins/dokuwiki/inc/parserutils.php on line 407

Fixed in SVN right now

Works fine here. Are you using the latest version of convbdf?

I also have this problem with current convbdf on Debian unstable (gcc 4.0.3). The resulting file is about a third of the one you’ve attached.

Ah, I just noticed something curious. The file is 65536 bytes large, I’m guessing that might mean something?

maybe it has something to do with gcc 4.0? I am using gcc 3.3.5.

Bingo! Just tried compiling convbdf with gcc 3.3.6 and there was no problem. No idea what to do about it though, but at least there’s a workaround.

Hrm, I still get segfaults on some files even when using gcc 3.3 - no longer on that particular file though.
This one still causes a segfault, even with gcc 3.3.6:*checkout*/xorg/xc/fonts/bdf/100dpi/luIS24.bdf

And again the file ends up being 65536 bytes. I can’t help but assume that this means something.

This fixes at least the problem with lulS24.bdf. I didn’t yet check why.

Index: convbdf.c

RCS file: /cvsroot/rockbox/tools/convbdf.c,v
retrieving revision 1.20
diff -u -p -r1.20 convbdf.c
— convbdf.c 18 Apr 2006 17:24:14 -0000 1.20
+++ convbdf.c 18 Sep 2006 22:52:12 -0000
@@ -1048,7 +1048,7 @@ int gen_fnt_file(struct font* pf, char *

       bitmap_t* bits;
       int width = pf->width ? pf->width[i] : pf->maxwidth;
       int size;

- unsigned char bytemap[256];
+ unsigned char bytemap[512];

       /* Skip missing glyphs */
       if (pf->offset && (pf->offset[i] == (unsigned int)-1))


Available keyboard shortcuts


Task Details

Task Editing