GNOME Bugzilla – Bug 593240
Crash / infinite loop with Mac OS X
Last modified: 2012-08-25 20:34:51 UTC
this is the vaguest summary title i've ever used, and i am ashamed Starting program: /opt/local/bin/rgbpaint Reading symbols for shared libraries ++++++++................................................................ done Xlib: extension "RANDR" missing on display ":0.0". Reading symbols for shared libraries . done Reading symbols for shared libraries . done Reading symbols for shared libraries . done Program received signal EXC_BAD_ACCESS, Could not access memory. 0x00cdf5e4 in _pango_ot_info_substitute (info=0x14e3e0, ruleset=0x36c708, buffer=0x3741e0) at /Source/pango/pango/pango/pango-ot-info.c:558 558 hb_ot_layout_substitute_lookup (info->hb_face, (gdb) bt full
+ Trace 217170
Pango version and architecture? Can you recompile with CPPFLAGS=-O0 please?
pango 1.25.5 arch powerpc -O0'd Program received signal EXC_BAD_ACCESS, Could not access memory. 0x00cdf5e4 in _pango_ot_info_substitute (info=0x14e3e0, ruleset=0x36c708, buffer=0x3741e0) at /Source/pango/pango/pango/pango-ot-info.c:558 558 hb_ot_layout_substitute_lookup (info->hb_face, (gdb) bt full
+ Trace 217172
Absolutely no idea. Can you run pango/pango/opentype/main on a few fonts and see what it does?
ok according to ktrace, the first and only font it accesses before anything crashes is bitstream vera, so here's that % /tmp/pango/Build/pango/opentype/main /usr/X11R6/lib/X11/fonts/TTF/Vera.ttf Opened font file /usr/X11R6/lib/X11/fonts/TTF/Vera.ttf: 65932 bytes long OpenType font with TrueType outlines 1 font(s) found in file Font 0 of 1: 17 table(s) found in font Table 0 of 17: OS/2 (0x0000eb70+0x00000056) Table 1 of 17: PCLT (0x0000ebc8+0x00000036) Table 2 of 17: cmap (0x0000b16c+0x00000358) Table 3 of 17: cvt (0x00001efc+0x000001fc) Table 4 of 17: fpgm (0x00002660+0x0000008b) Table 5 of 17: gasp (0x00010148+0x0000000c) Table 6 of 17: glyf (0x000026ec+0x00008a7e) Table 7 of 17: hdmx (0x0000ec00+0x00001548) Table 8 of 17: head (0x00010154+0x00000036) Table 9 of 17: hhea (0x0000eb4c+0x00000024) Table 10 of 17: hmtx (0x0000b4c4+0x00000430) Table 11 of 17: kern (0x0000bda0+0x00002d8a) Table 12 of 17: loca (0x0000bb84+0x0000021a) Table 13 of 17: maxp (0x0000eb2c+0x00000020) Table 14 of 17: name (0x0000011c+0x00001ddf) Table 15 of 17: post (0x0000b8f4+0x0000028e) Table 16 of 17: prep (0x000020f8+0x00000568) % /tmp/pango/Build/pango/opentype/main /usr/X11R6/lib/X11/fonts/TTF/VeraSe.ttf Opened font file /usr/X11R6/lib/X11/fonts/TTF/VeraSe.ttf: 60280 bytes long OpenType font with TrueType outlines 1 font(s) found in file Font 0 of 1: 17 table(s) found in font Table 0 of 17: OS/2 (0x0000d55c+0x00000056) Table 1 of 17: PCLT (0x0000d5b4+0x00000036) Table 2 of 17: cmap (0x0000b588+0x00000358) Table 3 of 17: cvt (0x00001f04+0x00000194) Table 4 of 17: fpgm (0x000025f8+0x0000008b) Table 5 of 17: gasp (0x0000eb34+0x0000000c) Table 6 of 17: glyf (0x00002684+0x00008f02) Table 7 of 17: hdmx (0x0000d5ec+0x00001548) Table 8 of 17: head (0x0000eb40+0x00000036) Table 9 of 17: hhea (0x0000d538+0x00000024) Table 10 of 17: hmtx (0x0000b8e0+0x00000430) Table 11 of 17: kern (0x0000c1bc+0x0000135c) Table 12 of 17: loca (0x0000bfa0+0x0000021a) Table 13 of 17: maxp (0x0000d518+0x00000020) Table 14 of 17: name (0x0000011c+0x00001de5) Table 15 of 17: post (0x0000bd10+0x0000028e) Table 16 of 17: prep (0x00002098+0x0000055e) % /tmp/pango/Build/pango/opentype/main /usr/X11R6/lib/X11/fonts/TTF/VeraMono.ttf Opened font file /usr/X11R6/lib/X11/fonts/TTF/VeraMono.ttf: 49224 bytes long OpenType font with TrueType outlines 1 font(s) found in file Font 0 of 1: 16 table(s) found in font Table 0 of 16: OS/2 (0x0000aa2c+0x00000056) Table 1 of 16: PCLT (0x0000aa84+0x00000036) Table 2 of 16: cmap (0x00009da8+0x00000358) Table 3 of 16: cvt (0x00001f08+0x00000230) Table 4 of 16: fpgm (0x00002854+0x0000008c) Table 5 of 16: gasp (0x0000c004+0x0000000c) Table 6 of 16: glyf (0x000028e0+0x000074c8) Table 7 of 16: hdmx (0x0000aabc+0x00001548) Table 8 of 16: head (0x0000c010+0x00000036) Table 9 of 16: hhea (0x0000aa08+0x00000024) Table 10 of 16: hmtx (0x0000a100+0x00000434) Table 11 of 16: loca (0x0000a7cc+0x0000021c) Table 12 of 16: maxp (0x0000a9e8+0x00000020) Table 13 of 16: name (0x0000010c+0x00001dfa) Table 14 of 16: post (0x0000a534+0x00000296) Table 15 of 16: prep (0x00002138+0x0000071b) for fun, the lastresort font % /tmp/pango/Build/pango/opentype/main /Library/Fonts/LastResort.ttf Opened font file /Library/Fonts/LastResort.ttf: 5395052 bytes long OpenType font with TrueType outlines 1 font(s) found in file Font 0 of 1: 19 table(s) found in font Table 0 of 19: GDEF (0x005004e0+0x00000016) Has glyph classes Has no mark attachment types Has no attach points Has no lig carets Has no mark sets Table 1 of 19: GPOS (0x005004f8+0x00000120) 17 script(s) found in table Script 0 of 17: arab 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 1 of 17: beng 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 2 of 17: deva 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 3 of 17: gujr 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 4 of 17: guru 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 5 of 17: khmr 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 6 of 17: knda 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 7 of 17: lao 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 8 of 17: mlym 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 9 of 17: mong 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 10 of 17: orya 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 11 of 17: sinh 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 12 of 17: syrc 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 13 of 17: taml 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 14 of 17: telu 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 15 of 17: thaa 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system Script 16 of 17: tibt 0 language system(s) found in script Default Language System No required feature 0 feature(s) found in language system 0 feature(s) found in table 0 lookup(s) found in table Table 2 of 19: GSUB (0x00500618+0x00001738) 17 script(s) found in table Script 0 of 17: arab 0 language system(s) found in script Default Language System No required feature 4 feature(s) found in language system Feature index 0 of 4: 47 Feature index 1 of 4: 63 Feature index 2 of 4: 68 Feature index 3 of 4: 99 Script 1 of 17: beng 0 language system(s) found in script Default Language System No required feature 13 feature(s) found in language system Feature index 0 of 13: 1 Feature index 1 of 13: 12 Feature index 2 of 13: 22 Feature index 3 of 13: 33 Feature index 4 of 13: 49 Feature index 5 of 13: 53 Feature index 6 of 13: 64 Feature index 7 of 13: 70 Feature index 8 of 13: 77 Feature index 9 of 13: 83 Feature index 10 of 13: 88 Feature index 11 of 13: 101 Feature index 12 of 13: 109 Script 2 of 17: deva 0 language system(s) found in script Default Language System No required feature 11 feature(s) found in language system Feature index 0 of 11: 2 Feature index 1 of 11: 13 Feature index 2 of 11: 24 Feature index 3 of 11: 34 Feature index 4 of 11: 50 Feature index 5 of 11: 54 Feature index 6 of 11: 71 Feature index 7 of 11: 78 Feature index 8 of 11: 89 Feature index 9 of 11: 102 Feature index 10 of 11: 110 Script 3 of 17: gujr 0 language system(s) found in script Default Language System No required feature 11 feature(s) found in language system Feature index 0 of 11: 3 Feature index 1 of 11: 14 Feature index 2 of 11: 25 Feature index 3 of 11: 35 Feature index 4 of 11: 51 Feature index 5 of 11: 55 Feature index 6 of 11: 72 Feature index 7 of 11: 79 Feature index 8 of 11: 90 Feature index 9 of 11: 103 Feature index 10 of 11: 111 Script 4 of 17: guru 0 language system(s) found in script Default Language System No required feature 9 feature(s) found in language system Feature index 0 of 9: 4 Feature index 1 of 9: 26 Feature index 2 of 9: 36 Feature index 3 of 9: 56 Feature index 4 of 9: 73 Feature index 5 of 9: 80 Feature index 6 of 9: 84 Feature index 7 of 9: 91 Feature index 8 of 9: 112 Script 5 of 17: hang 0 language system(s) found in script Default Language System No required feature 3 feature(s) found in language system Feature index 0 of 3: 66 Feature index 1 of 3: 108 Feature index 2 of 3: 113 Script 6 of 17: khmr 0 language system(s) found in script Default Language System No required feature 9 feature(s) found in language system Feature index 0 of 9: 0 Feature index 1 of 9: 5 Feature index 2 of 9: 27 Feature index 3 of 9: 37 Feature index 4 of 9: 44 Feature index 5 of 9: 76 Feature index 6 of 9: 81 Feature index 7 of 9: 85 Feature index 8 of 9: 92 Script 7 of 17: knda 0 language system(s) found in script Default Language System No required feature 7 feature(s) found in language system Feature index 0 of 7: 6 Feature index 1 of 7: 15 Feature index 2 of 7: 28 Feature index 3 of 7: 39 Feature index 4 of 7: 58 Feature index 5 of 7: 94 Feature index 6 of 7: 105 Script 8 of 17: mlym 0 language system(s) found in script Default Language System No required feature 1 feature(s) found in language system Feature index 0 of 1: 17 Script 9 of 17: mong 0 language system(s) found in script Default Language System No required feature 1 feature(s) found in language system Feature index 0 of 1: 114 Script 10 of 17: orya 0 language system(s) found in script Default Language System No required feature 9 feature(s) found in language system Feature index 0 of 9: 8 Feature index 1 of 9: 18 Feature index 2 of 9: 30 Feature index 3 of 9: 40 Feature index 4 of 9: 59 Feature index 5 of 9: 74 Feature index 6 of 9: 86 Feature index 7 of 9: 95 Feature index 8 of 9: 106 Script 11 of 17: sinh 0 language system(s) found in script Default Language System No required feature 9 feature(s) found in language system Feature index 0 of 9: 9 Feature index 1 of 9: 19 Feature index 2 of 9: 31 Feature index 3 of 9: 41 Feature index 4 of 9: 60 Feature index 5 of 9: 75 Feature index 6 of 9: 87 Feature index 7 of 9: 96 Feature index 8 of 9: 107 Script 12 of 17: syrc 0 language system(s) found in script Default Language System No required feature 7 feature(s) found in language system Feature index 0 of 7: 45 Feature index 1 of 7: 46 Feature index 2 of 7: 48 Feature index 3 of 7: 65 Feature index 4 of 7: 67 Feature index 5 of 7: 69 Feature index 6 of 7: 100 Script 13 of 17: taml 0 language system(s) found in script Default Language System No required feature 7 feature(s) found in language system Feature index 0 of 7: 10 Feature index 1 of 7: 20 Feature index 2 of 7: 42 Feature index 3 of 7: 52 Feature index 4 of 7: 61 Feature index 5 of 7: 82 Feature index 6 of 7: 97 Script 14 of 17: telu 0 language system(s) found in script Default Language System No required feature 6 feature(s) found in language system Feature index 0 of 6: 11 Feature index 1 of 6: 21 Feature index 2 of 6: 32 Feature index 3 of 6: 43 Feature index 4 of 6: 62 Feature index 5 of 6: 98 Script 15 of 17: thaa 0 language system(s) found in script Default Language System No required feature 1 feature(s) found in language system Feature index 0 of 1: 115 Script 16 of 17: tibt 0 language system(s) found in script Default Language System No required feature 1 feature(s) found in language system Feature index 0 of 1: 116 117 feature(s) found in table Feature 0 of 117: abvf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 0 Feature 1 of 117: abvs; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 1 Feature 2 of 117: abvs; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 2 Feature 3 of 117: abvs; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 3 Feature 4 of 117: abvs; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 4 Feature 5 of 117: abvs; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 5 Feature 6 of 117: abvs; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 6 Feature 7 of 117: abvs; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 7 Feature 8 of 117: abvs; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 8 Feature 9 of 117: abvs; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 9 Feature 10 of 117: abvs; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 10 Feature 11 of 117: abvs; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 11 Feature 12 of 117: akhn; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 12 Feature 13 of 117: akhn; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 13 Feature 14 of 117: akhn; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 14 Feature 15 of 117: akhn; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 15 Feature 16 of 117: akhn; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 16 Feature 17 of 117: akhn; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 17 Feature 18 of 117: akhn; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 18 Feature 19 of 117: akhn; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 19 Feature 20 of 117: akhn; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 20 Feature 21 of 117: akhn; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 21 Feature 22 of 117: blwf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 22 Feature 23 of 117: blwf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 23 Feature 24 of 117: blwf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 24 Feature 25 of 117: blwf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 25 Feature 26 of 117: blwf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 26 Feature 27 of 117: blwf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 27 Feature 28 of 117: blwf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 28 Feature 29 of 117: blwf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 29 Feature 30 of 117: blwf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 30 Feature 31 of 117: blwf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 31 Feature 32 of 117: blwf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 32 Feature 33 of 117: blws; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 33 Feature 34 of 117: blws; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 34 Feature 35 of 117: blws; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 35 Feature 36 of 117: blws; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 36 Feature 37 of 117: blws; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 37 Feature 38 of 117: blws; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 38 Feature 39 of 117: blws; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 39 Feature 40 of 117: blws; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 40 Feature 41 of 117: blws; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 41 Feature 42 of 117: blws; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 42 Feature 43 of 117: blws; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 43 Feature 44 of 117: clig; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 44 Feature 45 of 117: fin2; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 45 Feature 46 of 117: fin3; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 46 Feature 47 of 117: fina; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 47 Feature 48 of 117: fina; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 48 Feature 49 of 117: half; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 49 Feature 50 of 117: half; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 50 Feature 51 of 117: half; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 51 Feature 52 of 117: half; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 52 Feature 53 of 117: haln; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 53 Feature 54 of 117: haln; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 54 Feature 55 of 117: haln; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 55 Feature 56 of 117: haln; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 56 Feature 57 of 117: haln; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 57 Feature 58 of 117: haln; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 58 Feature 59 of 117: haln; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 59 Feature 60 of 117: haln; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 60 Feature 61 of 117: haln; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 61 Feature 62 of 117: haln; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 62 Feature 63 of 117: init; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 63 Feature 64 of 117: init; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 64 Feature 65 of 117: init; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 65 Feature 66 of 117: ljmo; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 66 Feature 67 of 117: med2; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 67 Feature 68 of 117: medi; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 68 Feature 69 of 117: medi; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 69 Feature 70 of 117: nukt; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 70 Feature 71 of 117: nukt; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 71 Feature 72 of 117: nukt; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 72 Feature 73 of 117: nukt; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 73 Feature 74 of 117: nukt; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 74 Feature 75 of 117: nukt; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 75 Feature 76 of 117: pref; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 76 Feature 77 of 117: pres; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 77 Feature 78 of 117: pres; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 78 Feature 79 of 117: pres; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 79 Feature 80 of 117: pres; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 80 Feature 81 of 117: pres; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 81 Feature 82 of 117: pres; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 82 Feature 83 of 117: pstf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 83 Feature 84 of 117: pstf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 84 Feature 85 of 117: pstf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 85 Feature 86 of 117: pstf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 86 Feature 87 of 117: pstf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 87 Feature 88 of 117: psts; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 88 Feature 89 of 117: psts; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 89 Feature 90 of 117: psts; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 90 Feature 91 of 117: psts; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 91 Feature 92 of 117: psts; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 92 Feature 93 of 117: psts; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 93 Feature 94 of 117: psts; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 94 Feature 95 of 117: psts; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 95 Feature 96 of 117: psts; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 96 Feature 97 of 117: psts; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 97 Feature 98 of 117: psts; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 98 Feature 99 of 117: rlig; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 99 Feature 100 of 117: rlig; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 100 Feature 101 of 117: rphf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 101 Feature 102 of 117: rphf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 102 Feature 103 of 117: rphf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 103 Feature 104 of 117: rphf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 104 Feature 105 of 117: rphf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 105 Feature 106 of 117: rphf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 106 Feature 107 of 117: rphf; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 107 Feature 108 of 117: tjmo; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 108 Feature 109 of 117: vatu; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 109 Feature 110 of 117: vatu; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 110 Feature 111 of 117: vatu; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 111 Feature 112 of 117: vatu; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 112 Feature 113 of 117: vjmo; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 113 Feature 114 of 117: zz01; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 114 Feature 115 of 117: zz01; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 115 Feature 116 of 117: zz01; 1 lookup(s) 1 lookup(s) found in feature Lookup index 0 of 1: 116 117 lookup(s) found in table Lookup 0 of 117: type 4, flags 0x0000 Lookup 1 of 117: type 4, flags 0x0000 Lookup 2 of 117: type 4, flags 0x0000 Lookup 3 of 117: type 4, flags 0x0000 Lookup 4 of 117: type 4, flags 0x0000 Lookup 5 of 117: type 4, flags 0x0000 Lookup 6 of 117: type 4, flags 0x0000 Lookup 7 of 117: type 4, flags 0x0000 Lookup 8 of 117: type 4, flags 0x0000 Lookup 9 of 117: type 4, flags 0x0000 Lookup 10 of 117: type 4, flags 0x0000 Lookup 11 of 117: type 4, flags 0x0000 Lookup 12 of 117: type 4, flags 0x0000 Lookup 13 of 117: type 4, flags 0x0000 Lookup 14 of 117: type 4, flags 0x0000 Lookup 15 of 117: type 4, flags 0x0000 Lookup 16 of 117: type 4, flags 0x0000 Lookup 17 of 117: type 4, flags 0x0000 Lookup 18 of 117: type 4, flags 0x0000 Lookup 19 of 117: type 4, flags 0x0000 Lookup 20 of 117: type 4, flags 0x0000 Lookup 21 of 117: type 4, flags 0x0000 Lookup 22 of 117: type 4, flags 0x0000 Lookup 23 of 117: type 4, flags 0x0000 Lookup 24 of 117: type 4, flags 0x0000 Lookup 25 of 117: type 4, flags 0x0000 Lookup 26 of 117: type 4, flags 0x0000 Lookup 27 of 117: type 4, flags 0x0000 Lookup 28 of 117: type 4, flags 0x0000 Lookup 29 of 117: type 4, flags 0x0000 Lookup 30 of 117: type 4, flags 0x0000 Lookup 31 of 117: type 4, flags 0x0000 Lookup 32 of 117: type 4, flags 0x0000 Lookup 33 of 117: type 4, flags 0x0000 Lookup 34 of 117: type 4, flags 0x0000 Lookup 35 of 117: type 4, flags 0x0000 Lookup 36 of 117: type 4, flags 0x0000 Lookup 37 of 117: type 4, flags 0x0000 Lookup 38 of 117: type 4, flags 0x0000 Lookup 39 of 117: type 4, flags 0x0000 Lookup 40 of 117: type 4, flags 0x0000 Lookup 41 of 117: type 4, flags 0x0000 Lookup 42 of 117: type 4, flags 0x0000 Lookup 43 of 117: type 4, flags 0x0000 Lookup 44 of 117: type 4, flags 0x0000 Lookup 45 of 117: type 4, flags 0x0000 Lookup 46 of 117: type 4, flags 0x0000 Lookup 47 of 117: type 4, flags 0x0000 Lookup 48 of 117: type 4, flags 0x0000 Lookup 49 of 117: type 4, flags 0x0000 Lookup 50 of 117: type 4, flags 0x0000 Lookup 51 of 117: type 4, flags 0x0000 Lookup 52 of 117: type 4, flags 0x0000 Lookup 53 of 117: type 4, flags 0x0000 Lookup 54 of 117: type 4, flags 0x0000 Lookup 55 of 117: type 4, flags 0x0000 Lookup 56 of 117: type 4, flags 0x0000 Lookup 57 of 117: type 4, flags 0x0000 Lookup 58 of 117: type 4, flags 0x0000 Lookup 59 of 117: type 4, flags 0x0000 Lookup 60 of 117: type 4, flags 0x0000 Lookup 61 of 117: type 4, flags 0x0000 Lookup 62 of 117: type 4, flags 0x0000 Lookup 63 of 117: type 4, flags 0x0000 Lookup 64 of 117: type 4, flags 0x0000 Lookup 65 of 117: type 4, flags 0x0000 Lookup 66 of 117: type 4, flags 0x0000 Lookup 67 of 117: type 4, flags 0x0000 Lookup 68 of 117: type 4, flags 0x0000 Lookup 69 of 117: type 4, flags 0x0000 Lookup 70 of 117: type 4, flags 0x0000 Lookup 71 of 117: type 4, flags 0x0000 Lookup 72 of 117: type 4, flags 0x0000 Lookup 73 of 117: type 4, flags 0x0000 Lookup 74 of 117: type 4, flags 0x0000 Lookup 75 of 117: type 4, flags 0x0000 Lookup 76 of 117: type 4, flags 0x0000 Lookup 77 of 117: type 4, flags 0x0000 Lookup 78 of 117: type 4, flags 0x0000 Lookup 79 of 117: type 4, flags 0x0000 Lookup 80 of 117: type 4, flags 0x0000 Lookup 81 of 117: type 4, flags 0x0000 Lookup 82 of 117: type 4, flags 0x0000 Lookup 83 of 117: type 4, flags 0x0000 Lookup 84 of 117: type 4, flags 0x0000 Lookup 85 of 117: type 4, flags 0x0000 Lookup 86 of 117: type 4, flags 0x0000 Lookup 87 of 117: type 4, flags 0x0000 Lookup 88 of 117: type 4, flags 0x0000 Lookup 89 of 117: type 4, flags 0x0000 Lookup 90 of 117: type 4, flags 0x0000 Lookup 91 of 117: type 4, flags 0x0000 Lookup 92 of 117: type 4, flags 0x0000 Lookup 93 of 117: type 4, flags 0x0000 Lookup 94 of 117: type 4, flags 0x0000 Lookup 95 of 117: type 4, flags 0x0000 Lookup 96 of 117: type 4, flags 0x0000 Lookup 97 of 117: type 4, flags 0x0000 Lookup 98 of 117: type 4, flags 0x0000 Lookup 99 of 117: type 4, flags 0x0000 Lookup 100 of 117: type 4, flags 0x0000 Lookup 101 of 117: type 4, flags 0x0000 Lookup 102 of 117: type 4, flags 0x0000 Lookup 103 of 117: type 4, flags 0x0000 Lookup 104 of 117: type 4, flags 0x0000 Lookup 105 of 117: type 4, flags 0x0000 Lookup 106 of 117: type 4, flags 0x0000 Lookup 107 of 117: type 4, flags 0x0000 Lookup 108 of 117: type 4, flags 0x0000 Lookup 109 of 117: type 4, flags 0x0000 Lookup 110 of 117: type 4, flags 0x0000 Lookup 111 of 117: type 4, flags 0x0000 Lookup 112 of 117: type 4, flags 0x0000 Lookup 113 of 117: type 4, flags 0x0000 Lookup 114 of 117: type 4, flags 0x0000 Lookup 115 of 117: type 4, flags 0x0000 Lookup 116 of 117: type 4, flags 0x0000 Table 3 of 19: LTSH (0x00501d50+0x00000118) Table 4 of 19: OS/2 (0x00500480+0x00000060) Table 5 of 19: VDMX (0x00501e68+0x000005e0) Table 6 of 19: cmap (0x0008d100+0x00473360) Table 7 of 19: cvt (0x00073260+0x000006f8) Table 8 of 19: fpgm (0x00006238+0x00000176) Table 9 of 19: glyf (0x0000c56c+0x00066cf2) Table 10 of 19: hdmx (0x00502448+0x00022e24) Table 11 of 19: head (0x00073958+0x00000036) Table 12 of 19: hhea (0x00073990+0x00000024) Table 13 of 19: hmtx (0x0000013c+0x000060fc) Table 14 of 19: loca (0x0000646c+0x00006100) Table 15 of 19: maxp (0x00500460+0x00000020) Table 16 of 19: name (0x0008c924+0x000007da) Table 17 of 19: post (0x000739b4+0x00018f6e) Table 18 of 19: prep (0x000063b0+0x000000ba) also in case it matters using freetype2, git commit 2cd790d7e2de40dadea5a2a5ffacdfc7e0e56461 fontconfig, git commit 558581c434abf0d96c46cf3bb1454be6806e1ffc fc caches rebuilt from scratch just now
Thanks. No progress yet. Can you compile with CPPFLAGS=-DHB_DEBUG=20 and attach the crash log?
lol, no crash with -DHB_DEBUG=20, here's the log anyhow % rgbpaint Xlib: extension "RANDR" missing on display ":0.0". Sanitizer 0x77c6f0 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = OpenTypeFontFile] 0x77c6f0 hb_blob_lock (1) -> 0x23e0000 sanitize 0x77c6f0 init [0x23e0000..0x23f018c] (65932 bytes) SANITIZE(0x23e0000) 1-> bool OpenTypeFontFile::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e0000) 2 -> check [0x23e0000..0x23e0004] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e0000) 2 -> bool OffsetTable::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e0000) 3 -> check [0x23e0000..0x23e000c] (12 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e000c) 3 -> check [0x23e000c..0x23e011c] (272 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e000c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e000c) 4 -> check [0x23e000c..0x23e001c] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e000c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e000c) 5 -> check [0x23e000c..0x23e0010] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23eeb70) 4 -> check [0x23eeb70..0x23eebc6] (86 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e001c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e001c) 4 -> check [0x23e001c..0x23e002c] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e001c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e001c) 5 -> check [0x23e001c..0x23e0020] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23eebc8) 4 -> check [0x23eebc8..0x23eebfe] (54 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e002c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e002c) 4 -> check [0x23e002c..0x23e003c] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e002c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e002c) 5 -> check [0x23e002c..0x23e0030] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23eb16c) 4 -> check [0x23eb16c..0x23eb4c4] (856 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e003c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e003c) 4 -> check [0x23e003c..0x23e004c] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e003c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e003c) 5 -> check [0x23e003c..0x23e0040] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e1efc) 4 -> check [0x23e1efc..0x23e20f8] (508 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e004c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e004c) 4 -> check [0x23e004c..0x23e005c] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e004c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e004c) 5 -> check [0x23e004c..0x23e0050] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e2660) 4 -> check [0x23e2660..0x23e26eb] (139 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e005c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e005c) 4 -> check [0x23e005c..0x23e006c] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e005c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e005c) 5 -> check [0x23e005c..0x23e0060] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23f0148) 4 -> check [0x23f0148..0x23f0154] (12 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e006c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e006c) 4 -> check [0x23e006c..0x23e007c] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e006c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e006c) 5 -> check [0x23e006c..0x23e0070] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e26ec) 4 -> check [0x23e26ec..0x23eb16a] (35454 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e007c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e007c) 4 -> check [0x23e007c..0x23e008c] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e007c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e007c) 5 -> check [0x23e007c..0x23e0080] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23eec00) 4 -> check [0x23eec00..0x23f0148] (5448 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e008c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e008c) 4 -> check [0x23e008c..0x23e009c] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e008c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e008c) 5 -> check [0x23e008c..0x23e0090] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23f0154) 4 -> check [0x23f0154..0x23f018a] (54 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e009c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e009c) 4 -> check [0x23e009c..0x23e00ac] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e009c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e009c) 5 -> check [0x23e009c..0x23e00a0] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23eeb4c) 4 -> check [0x23eeb4c..0x23eeb70] (36 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00ac) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e00ac) 4 -> check [0x23e00ac..0x23e00bc] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00ac) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e00ac) 5 -> check [0x23e00ac..0x23e00b0] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23eb4c4) 4 -> check [0x23eb4c4..0x23eb8f4] (1072 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00bc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e00bc) 4 -> check [0x23e00bc..0x23e00cc] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00bc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e00bc) 5 -> check [0x23e00bc..0x23e00c0] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23ebda0) 4 -> check [0x23ebda0..0x23eeb2a] (11658 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00cc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e00cc) 4 -> check [0x23e00cc..0x23e00dc] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00cc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e00cc) 5 -> check [0x23e00cc..0x23e00d0] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23ebb84) 4 -> check [0x23ebb84..0x23ebd9e] (538 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00dc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e00dc) 4 -> check [0x23e00dc..0x23e00ec] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00dc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e00dc) 5 -> check [0x23e00dc..0x23e00e0] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23eeb2c) 4 -> check [0x23eeb2c..0x23eeb4c] (32 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00ec) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e00ec) 4 -> check [0x23e00ec..0x23e00fc] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00ec) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e00ec) 5 -> check [0x23e00ec..0x23e00f0] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e011c) 4 -> check [0x23e011c..0x23e1efb] (7647 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00fc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e00fc) 4 -> check [0x23e00fc..0x23e010c] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e00fc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e00fc) 5 -> check [0x23e00fc..0x23e0100] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23eb8f4) 4 -> check [0x23eb8f4..0x23ebb82] (654 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e010c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0x23e010c) 4 -> check [0x23e010c..0x23e011c] (16 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e010c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x23e010c) 5 -> check [0x23e010c..0x23e0110] (4 bytes) in [0x23e0000..0x23f018c] -> pass SANITIZE(0x23e20f8) 4 -> check [0x23e20f8..0x23e2660] (1384 bytes) in [0x23e0000..0x23f018c] -> pass sanitize 0x77c6f0 fini [0x23e0000..0x23f018c] 0 edit requests 0x77c6f0 hb_blob_unlock (0) -> 0x23e0000 Sanitizer 0x77c6f0 passed static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = OpenTypeFontFile] 0x77c6f0 hb_blob_lock (1) -> 0x23e0000 0x77c6f0 hb_blob_unlock (0) -> 0x23e0000 Sanitizer 0xd1216c start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GDEF] sanitize 0xd1216c init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GDEF::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0xd1216c fini [0x0..0x0] 0 edit requests Sanitizer 0xd1216c FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GDEF] 0x77c6f0 hb_blob_lock (1) -> 0x23e0000 0x77c6f0 hb_blob_unlock (0) -> 0x23e0000 Sanitizer 0xd1216c start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GSUB] sanitize 0xd1216c init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GSUB::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool GSUBGPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 4 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0xd1216c fini [0x0..0x0] 0 edit requests Sanitizer 0xd1216c FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GSUB] 0x77c6f0 hb_blob_lock (1) -> 0x23e0000 0x77c6f0 hb_blob_unlock (0) -> 0x23e0000 Sanitizer 0xd1216c start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GPOS] sanitize 0xd1216c init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool GSUBGPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 4 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0xd1216c fini [0x0..0x0] 0 edit requests Sanitizer 0xd1216c FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GPOS]
That's cruel! The app works then?
yep, all of them
Out of things for you to try :(. Any chance you can give me ssh access to the box?! If you feel like debugging, basically at the point of crash lookup_count is nonsensical. You need to debug into hb_ot_layout_feature_get_lookup_indexes() and see why that's happening. Humm, although I now see a bug that should fix the crash, however the lookup_count is still wrong.
Pushed the "fix" to master. However, as I said, there is another bug in there.
Any progress here by any chance?
not really, switched over to a newer compiler, similar results Start it from the beginning? (y or n) y Starting program: /opt/local/bin/rgbpaint Temporarily disabling shared library breakpoints: 1 Re-enabling shared library breakpoints: 1 Xlib: extension "RANDR" missing on display ":0.0". Sanitizer 0x6c8480 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = OpenTypeFontFile] 0x6c8480 hb_blob_lock (1) -> 0xdaa000 sanitize 0x6c8480 init [0xdaa000..0xdba18c] (65932 bytes) SANITIZE(0xdaa000) 1-> bool OpenTypeFontFile::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa000) 2 -> check [0xdaa000..0xdaa004] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa000) 2 -> bool OffsetTable::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa000) 3 -> check [0xdaa000..0xdaa00c] (12 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa00c) 3 -> check [0xdaa00c..0xdaa11c] (272 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa00c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa00c) 4 -> check [0xdaa00c..0xdaa01c] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa00c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa00c) 5 -> check [0xdaa00c..0xdaa010] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdb8b70) 4 -> check [0xdb8b70..0xdb8bc6] (86 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa01c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa01c) 4 -> check [0xdaa01c..0xdaa02c] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa01c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa01c) 5 -> check [0xdaa01c..0xdaa020] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdb8bc8) 4 -> check [0xdb8bc8..0xdb8bfe] (54 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa02c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa02c) 4 -> check [0xdaa02c..0xdaa03c] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa02c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa02c) 5 -> check [0xdaa02c..0xdaa030] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdb516c) 4 -> check [0xdb516c..0xdb54c4] (856 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa03c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa03c) 4 -> check [0xdaa03c..0xdaa04c] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa03c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa03c) 5 -> check [0xdaa03c..0xdaa040] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdabefc) 4 -> check [0xdabefc..0xdac0f8] (508 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa04c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa04c) 4 -> check [0xdaa04c..0xdaa05c] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa04c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa04c) 5 -> check [0xdaa04c..0xdaa050] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdac660) 4 -> check [0xdac660..0xdac6eb] (139 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa05c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa05c) 4 -> check [0xdaa05c..0xdaa06c] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa05c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa05c) 5 -> check [0xdaa05c..0xdaa060] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdba148) 4 -> check [0xdba148..0xdba154] (12 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa06c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa06c) 4 -> check [0xdaa06c..0xdaa07c] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa06c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa06c) 5 -> check [0xdaa06c..0xdaa070] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdac6ec) 4 -> check [0xdac6ec..0xdb516a] (35454 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa07c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa07c) 4 -> check [0xdaa07c..0xdaa08c] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa07c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa07c) 5 -> check [0xdaa07c..0xdaa080] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdb8c00) 4 -> check [0xdb8c00..0xdba148] (5448 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa08c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa08c) 4 -> check [0xdaa08c..0xdaa09c] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa08c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa08c) 5 -> check [0xdaa08c..0xdaa090] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdba154) 4 -> check [0xdba154..0xdba18a] (54 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa09c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa09c) 4 -> check [0xdaa09c..0xdaa0ac] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa09c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa09c) 5 -> check [0xdaa09c..0xdaa0a0] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdb8b4c) 4 -> check [0xdb8b4c..0xdb8b70] (36 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0ac) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa0ac) 4 -> check [0xdaa0ac..0xdaa0bc] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0ac) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa0ac) 5 -> check [0xdaa0ac..0xdaa0b0] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdb54c4) 4 -> check [0xdb54c4..0xdb58f4] (1072 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0bc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa0bc) 4 -> check [0xdaa0bc..0xdaa0cc] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0bc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa0bc) 5 -> check [0xdaa0bc..0xdaa0c0] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdb5da0) 4 -> check [0xdb5da0..0xdb8b2a] (11658 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0cc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa0cc) 4 -> check [0xdaa0cc..0xdaa0dc] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0cc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa0cc) 5 -> check [0xdaa0cc..0xdaa0d0] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdb5b84) 4 -> check [0xdb5b84..0xdb5d9e] (538 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0dc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa0dc) 4 -> check [0xdaa0dc..0xdaa0ec] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0dc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa0dc) 5 -> check [0xdaa0dc..0xdaa0e0] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdb8b2c) 4 -> check [0xdb8b2c..0xdb8b4c] (32 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0ec) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa0ec) 4 -> check [0xdaa0ec..0xdaa0fc] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0ec) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa0ec) 5 -> check [0xdaa0ec..0xdaa0f0] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa11c) 4 -> check [0xdaa11c..0xdabefb] (7647 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0fc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa0fc) 4 -> check [0xdaa0fc..0xdaa10c] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa0fc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa0fc) 5 -> check [0xdaa0fc..0xdaa100] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdb58f4) 4 -> check [0xdb58f4..0xdb5b82] (654 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa10c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xdaa10c) 4 -> check [0xdaa10c..0xdaa11c] (16 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdaa10c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xdaa10c) 5 -> check [0xdaa10c..0xdaa110] (4 bytes) in [0xdaa000..0xdba18c] -> pass SANITIZE(0xdac0f8) 4 -> check [0xdac0f8..0xdac660] (1384 bytes) in [0xdaa000..0xdba18c] -> pass sanitize 0x6c8480 fini [0xdaa000..0xdba18c] 0 edit requests 0x6c8480 hb_blob_unlock (0) -> 0xdaa000 Sanitizer 0x6c8480 passed static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = OpenTypeFontFile] 0x6c8480 hb_blob_lock (1) -> 0xdaa000 0x6c8480 hb_blob_unlock (0) -> 0xdaa000 Sanitizer 0xe6b048 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GDEF] sanitize 0xe6b048 init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GDEF::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0xe6b048 fini [0x0..0x0] 0 edit requests Sanitizer 0xe6b048 FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GDEF] 0x6c8480 hb_blob_lock (1) -> 0xdaa000 0x6c8480 hb_blob_unlock (0) -> 0xdaa000 Sanitizer 0xe6b048 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GSUB] sanitize 0xe6b048 init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GSUB::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool GSUBGPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 4 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0xe6b048 fini [0x0..0x0] 0 edit requests Sanitizer 0xe6b048 FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GSUB] 0x6c8480 hb_blob_lock (1) -> 0xdaa000 0x6c8480 hb_blob_unlock (0) -> 0xdaa000 Sanitizer 0xe6b048 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GPOS] sanitize 0xe6b048 init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool GSUBGPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 4 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0xe6b048 fini [0x0..0x0] 0 edit requests Sanitizer 0xe6b048 FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GPOS] Breakpoint 1, hb_ot_layout_feature_get_lookup_indexes (face=0x6c84e0, table_tag=1196643650, feature_index=31747, lookup_count=0xbfffd6f8, lookup_indexes=0xbfffd6fc) at /Source/pango/pango/pango/opentype/hb-ot-layout.cc:507 507 const GSUBGPOS &g = get_gsubgpos_table (face, table_tag); (gdb) bt full
+ Trace 217779
When you say new compiler, what exactly is that? And what was the old compiler?
used gcc 3.3 originally, then gcc 4.2 this last time
*** Bug 596654 has been marked as a duplicate of this bug. ***
*** Bug 596674 has been marked as a duplicate of this bug. ***
*** Bug 596675 has been marked as a duplicate of this bug. ***
Has someone tried compiling with upstream gcc, as opposed to Apple gcc?
Nope, this has nothing to do with PPC. This is gcc-4.2.1: i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5651) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This is happening with both i386 and x86_64 code.
Created attachment 144211 [details] 30 second sample of xchat during this problem
ok, using vanilla gcc 4.4.1, -DHB_DEBUG=20 seems to work % rgbpaint Xlib: extension "RANDR" missing on display ":0.0". Sanitizer 0x6c54b0 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = OpenTypeFontFile] 0x6c54b0 hb_blob_lock (1) -> 0xf34000 sanitize 0x6c54b0 init [0xf34000..0xf4418c] (65932 bytes) SANITIZE(0xf34000) 1-> bool OpenTypeFontFile::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf34000) 2 -> check [0xf34000..0xf34004] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf34000) 2 -> bool OffsetTable::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf34000) 3 -> check [0xf34000..0xf3400c] (12 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3400c) 3 -> check [0xf3400c..0xf3411c] (272 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3400c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf3400c) 4 -> check [0xf3400c..0xf3401c] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3400c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf3400c) 5 -> check [0xf3400c..0xf34010] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf42b70) 4 -> check [0xf42b70..0xf42bc6] (86 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3401c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf3401c) 4 -> check [0xf3401c..0xf3402c] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3401c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf3401c) 5 -> check [0xf3401c..0xf34020] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf42bc8) 4 -> check [0xf42bc8..0xf42bfe] (54 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3402c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf3402c) 4 -> check [0xf3402c..0xf3403c] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3402c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf3402c) 5 -> check [0xf3402c..0xf34030] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3f16c) 4 -> check [0xf3f16c..0xf3f4c4] (856 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3403c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf3403c) 4 -> check [0xf3403c..0xf3404c] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3403c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf3403c) 5 -> check [0xf3403c..0xf34040] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf35efc) 4 -> check [0xf35efc..0xf360f8] (508 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3404c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf3404c) 4 -> check [0xf3404c..0xf3405c] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3404c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf3404c) 5 -> check [0xf3404c..0xf34050] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf36660) 4 -> check [0xf36660..0xf366eb] (139 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3405c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf3405c) 4 -> check [0xf3405c..0xf3406c] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3405c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf3405c) 5 -> check [0xf3405c..0xf34060] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf44148) 4 -> check [0xf44148..0xf44154] (12 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3406c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf3406c) 4 -> check [0xf3406c..0xf3407c] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3406c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf3406c) 5 -> check [0xf3406c..0xf34070] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf366ec) 4 -> check [0xf366ec..0xf3f16a] (35454 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3407c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf3407c) 4 -> check [0xf3407c..0xf3408c] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3407c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf3407c) 5 -> check [0xf3407c..0xf34080] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf42c00) 4 -> check [0xf42c00..0xf44148] (5448 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3408c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf3408c) 4 -> check [0xf3408c..0xf3409c] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3408c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf3408c) 5 -> check [0xf3408c..0xf34090] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf44154) 4 -> check [0xf44154..0xf4418a] (54 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3409c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf3409c) 4 -> check [0xf3409c..0xf340ac] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3409c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf3409c) 5 -> check [0xf3409c..0xf340a0] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf42b4c) 4 -> check [0xf42b4c..0xf42b70] (36 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340ac) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf340ac) 4 -> check [0xf340ac..0xf340bc] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340ac) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf340ac) 5 -> check [0xf340ac..0xf340b0] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3f4c4) 4 -> check [0xf3f4c4..0xf3f8f4] (1072 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340bc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf340bc) 4 -> check [0xf340bc..0xf340cc] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340bc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf340bc) 5 -> check [0xf340bc..0xf340c0] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3fda0) 4 -> check [0xf3fda0..0xf42b2a] (11658 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340cc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf340cc) 4 -> check [0xf340cc..0xf340dc] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340cc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf340cc) 5 -> check [0xf340cc..0xf340d0] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3fb84) 4 -> check [0xf3fb84..0xf3fd9e] (538 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340dc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf340dc) 4 -> check [0xf340dc..0xf340ec] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340dc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf340dc) 5 -> check [0xf340dc..0xf340e0] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf42b2c) 4 -> check [0xf42b2c..0xf42b4c] (32 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340ec) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf340ec) 4 -> check [0xf340ec..0xf340fc] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340ec) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf340ec) 5 -> check [0xf340ec..0xf340f0] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3411c) 4 -> check [0xf3411c..0xf35efb] (7647 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340fc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf340fc) 4 -> check [0xf340fc..0xf3410c] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf340fc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf340fc) 5 -> check [0xf340fc..0xf34100] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3f8f4) 4 -> check [0xf3f8f4..0xf3fb82] (654 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3410c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xf3410c) 4 -> check [0xf3410c..0xf3411c] (16 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf3410c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xf3410c) 5 -> check [0xf3410c..0xf34110] (4 bytes) in [0xf34000..0xf4418c] -> pass SANITIZE(0xf360f8) 4 -> check [0xf360f8..0xf36660] (1384 bytes) in [0xf34000..0xf4418c] -> pass sanitize 0x6c54b0 fini [0xf34000..0xf4418c] 0 edit requests 0x6c54b0 hb_blob_unlock (0) -> 0xf34000 Sanitizer 0x6c54b0 passed static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = OpenTypeFontFile] 0x6c54b0 hb_blob_lock (1) -> 0xf34000 0x6c54b0 hb_blob_unlock (0) -> 0xf34000 Sanitizer 0xe4d044 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GDEF] sanitize 0xe4d044 init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GDEF::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0xe4d044 fini [0x0..0x0] 0 edit requests Sanitizer 0xe4d044 FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GDEF] 0x6c54b0 hb_blob_lock (1) -> 0xf34000 0x6c54b0 hb_blob_unlock (0) -> 0xf34000 Sanitizer 0xe4d044 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GSUB] sanitize 0xe4d044 init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GSUB::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool GSUBGPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 4 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0xe4d044 fini [0x0..0x0] 0 edit requests Sanitizer 0xe4d044 FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GSUB] 0x6c54b0 hb_blob_lock (1) -> 0xf34000 0x6c54b0 hb_blob_unlock (0) -> 0xf34000 Sanitizer 0xe4d044 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GPOS] sanitize 0xe4d044 init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool GSUBGPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 4 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0xe4d044 fini [0x0..0x0] 0 edit requests Sanitizer 0xe4d044 FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GPOS] will post without debug define set later (probably should have done that first)
works fine without HB_DEBUG set using gcc 4.4.1, so now i'm gonna compile vanilla gcc 4.2.1 and see how that works out
Thanks for trying.
works with vanilla gcc 4.2.1 and thank you for developing this et al
So, looks like only happening with Apple gcc? Any suggestions as to how to proceed?
Try to find a reduced test case, then http://bugreport.apple.com
actually, this is beyond just apple's gcc, you can't compile current pango in cygwin with their gcc 3.4.4 iirc
(In reply to comment #30) > actually, this is beyond just apple's gcc, you can't compile current pango in > cygwin with their gcc 3.4.4 iirc We don't support gcc 3.x. The error you get compiling with that compiler is very common if you Google it. And unless someone figures out what it actually means and how to fix it, that compiler remains unsupported. That doesn't have anything to do with the fact that the code that we have so far no reason to think being wrong misbehaves with Apple gcc only.
pango as of commit 1a6d89b217fb259f91f8661351336cec651c55e3 compiles and installs and seems to work for me
Interesting. Care to git-bisect or something?
i or somethinged, and it looks to be commit 29010456474a512c4193f2fec583c2723f3e2806 that finally gets things going again works for me with apple's gcc 4.2.1
I just tested 1.26.1 + the mentioned commit (http://git.gnome.org/cgit/pango/patch/?id=29010456474a512c4193f2fec583c2723f3e2806) ... the problem persists.
The bug is still present. I just tested 1.26.1 tarball + all 6 commits that have been pushed to master since then. Paul, how are you testing your bug? What system are you on? What architecture are you targeting? Here: SnowLeopard Unibody MBP, architectures tested i386 and x86_64
building with gcc version 4.2.1 (Apple Inc. build 5646), macosx 10.2, ppc
i'm able to reproduce it not working again, however, it seems all it takes for that to happen is to build it in a different location environment, libraries and headers, all the same, but it just doesn't work i guess i'll mention too to gum things up, the way i got it to work and how i normally build is by using the coreosmakefiles not gonna post the full HB_DEBUG=20 output because i doubt it'll do much good since it pretty much just repeats until i ctrl+c it % rgbpaint Xlib: extension "RANDR" missing on display ":0.0". Sanitizer 0x2687e0 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = OpenTypeFontFile] 0x2687e0 hb_blob_lock (1) -> 0xee1000 sanitize 0x2687e0 init [0xee1000..0xef118c] (65932 bytes) SANITIZE(0xee1000) 1-> bool OpenTypeFontFile::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee1000) 2 -> check [0xee1000..0xee1004] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee1000) 2 -> bool OffsetTable::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee1000) 3 -> check [0xee1000..0xee101c] (28 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee100c) 3 -> check [0xee100c..0xee111c] (272 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee100c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee100c) 4 -> check [0xee100c..0xee101c] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee100c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee100c) 5 -> check [0xee100c..0xee1010] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xeefb70) 4 -> check [0xeefb70..0xeefbc6] (86 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee101c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee101c) 4 -> check [0xee101c..0xee102c] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee101c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee101c) 5 -> check [0xee101c..0xee1020] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xeefbc8) 4 -> check [0xeefbc8..0xeefbfe] (54 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee102c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee102c) 4 -> check [0xee102c..0xee103c] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee102c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee102c) 5 -> check [0xee102c..0xee1030] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xeec16c) 4 -> check [0xeec16c..0xeec4c4] (856 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee103c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee103c) 4 -> check [0xee103c..0xee104c] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee103c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee103c) 5 -> check [0xee103c..0xee1040] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee2efc) 4 -> check [0xee2efc..0xee30f8] (508 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee104c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee104c) 4 -> check [0xee104c..0xee105c] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee104c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee104c) 5 -> check [0xee104c..0xee1050] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee3660) 4 -> check [0xee3660..0xee36eb] (139 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee105c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee105c) 4 -> check [0xee105c..0xee106c] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee105c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee105c) 5 -> check [0xee105c..0xee1060] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xef1148) 4 -> check [0xef1148..0xef1154] (12 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee106c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee106c) 4 -> check [0xee106c..0xee107c] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee106c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee106c) 5 -> check [0xee106c..0xee1070] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee36ec) 4 -> check [0xee36ec..0xeec16a] (35454 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee107c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee107c) 4 -> check [0xee107c..0xee108c] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee107c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee107c) 5 -> check [0xee107c..0xee1080] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xeefc00) 4 -> check [0xeefc00..0xef1148] (5448 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee108c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee108c) 4 -> check [0xee108c..0xee109c] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee108c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee108c) 5 -> check [0xee108c..0xee1090] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xef1154) 4 -> check [0xef1154..0xef118a] (54 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee109c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee109c) 4 -> check [0xee109c..0xee10ac] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee109c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee109c) 5 -> check [0xee109c..0xee10a0] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xeefb4c) 4 -> check [0xeefb4c..0xeefb70] (36 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10ac) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee10ac) 4 -> check [0xee10ac..0xee10bc] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10ac) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee10ac) 5 -> check [0xee10ac..0xee10b0] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xeec4c4) 4 -> check [0xeec4c4..0xeec8f4] (1072 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10bc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee10bc) 4 -> check [0xee10bc..0xee10cc] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10bc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee10bc) 5 -> check [0xee10bc..0xee10c0] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xeecda0) 4 -> check [0xeecda0..0xeefb2a] (11658 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10cc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee10cc) 4 -> check [0xee10cc..0xee10dc] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10cc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee10cc) 5 -> check [0xee10cc..0xee10d0] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xeecb84) 4 -> check [0xeecb84..0xeecd9e] (538 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10dc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee10dc) 4 -> check [0xee10dc..0xee10ec] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10dc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee10dc) 5 -> check [0xee10dc..0xee10e0] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xeefb2c) 4 -> check [0xeefb2c..0xeefb4c] (32 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10ec) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee10ec) 4 -> check [0xee10ec..0xee10fc] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10ec) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee10ec) 5 -> check [0xee10ec..0xee10f0] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee111c) 4 -> check [0xee111c..0xee2efb] (7647 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10fc) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee10fc) 4 -> check [0xee10fc..0xee110c] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee10fc) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee10fc) 5 -> check [0xee10fc..0xee1100] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xeec8f4) 4 -> check [0xeec8f4..0xeecb82] (654 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee110c) 3 -> bool TableDirectory::sanitize(hb_sanitize_context_t*, unsigned int, const void*) SANITIZE(0xee110c) 4 -> check [0xee110c..0xee111c] (16 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee110c) 4 -> bool Tag::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0xee110c) 5 -> check [0xee110c..0xee1110] (4 bytes) in [0xee1000..0xef118c] -> pass SANITIZE(0xee30f8) 4 -> check [0xee30f8..0xee3660] (1384 bytes) in [0xee1000..0xef118c] -> pass sanitize 0x2687e0 fini [0xee1000..0xef118c] 0 edit requests 0x2687e0 hb_blob_unlock (0) -> 0xee1000 Sanitizer 0x2687e0 passed static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = OpenTypeFontFile] 0x2687e0 hb_blob_lock (1) -> 0xee1000 0x2687e0 hb_blob_unlock (0) -> 0xee1000 Sanitizer 0x678048 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GDEF] sanitize 0x678048 init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GDEF::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0x678048 fini [0x0..0x0] 0 edit requests Sanitizer 0x678048 FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GDEF] 0x2687e0 hb_blob_lock (1) -> 0xee1000 0x2687e0 hb_blob_unlock (0) -> 0xee1000 Sanitizer 0x678048 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GSUB] sanitize 0x678048 init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GSUB::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool GSUBGPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 4 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0x678048 fini [0x0..0x0] 0 edit requests Sanitizer 0x678048 FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GSUB] 0x2687e0 hb_blob_lock (1) -> 0xee1000 0x2687e0 hb_blob_unlock (0) -> 0xee1000 Sanitizer 0x678048 start static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GPOS] sanitize 0x678048 init [0x0..0x0] (0 bytes) SANITIZE(0x0) 1-> bool GPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 2 -> bool GSUBGPOS::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 3 -> bool FixedVersion::sanitize(hb_sanitize_context_t*, unsigned int) SANITIZE(0x0) 4 -> check [0x0..0x4] (4 bytes) in [0x0..0x0] -> FAIL sanitize 0x678048 fini [0x0..0x0] 0 edit requests Sanitizer 0x678048 FAILED static hb_blob_t* Sanitizer<Type>::sanitize(hb_blob_t*) [with Type = GPOS] APPLY(0x6558b3) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6559ab) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655fc0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655084) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6549bf) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655ebe) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6561b5) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x654ec0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x65524c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x653aad) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6558b3) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x65594c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655a6c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x650b89) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x650a9a) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x653f98) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x65364c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655aad) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6558b3) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6559ab) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655fc0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655084) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6549bf) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655ebe) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6556b1) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x65584c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655a6c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x650b89) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x650a9a) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x653f98) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x65366c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6566c8) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x650ab9) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x654bc4) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x650a89) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x65276c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x651a4c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x653aad) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6558b3) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655992) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x654d92) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6559ba) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655e4c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655aad) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655ec0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x654fbe) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x65584c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x653aad) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655ec0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x654fbe) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x65584c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x653eb4) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x654f6c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6550bb) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6558c0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x654dbb) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6558b2) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6553b3) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x650abc) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x654bc0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655eb1) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655cba) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x650ab2) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6559be) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x650ac0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6552b5) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x655d6c) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6550bb) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x6558c0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const APPLY(0x0) 1-> bool SubstLookupSubTable::apply(hb_ot_layout_context_t*, hb_buffer_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) const
this seems to be a VPATH problem works when i let the coreosmakefiles set SRCROOT, which is also set to VPATH doesn't work when i override SRCROOT doesn't work when i build in the srcdir and VPATH doesn't even get set
i compile most everything without optimization, but now i realize that some optimization flags enabled by at least -O2 allows me to compile a working libpangoft2 no matter what i do i'll keep reconfiguring to determine what
Make sure you 'make clean' after changing your CFLAGS and checkout. It sounds like some things might not be getting remade...
i'm anal, srcdir is always pristine and i never use the same builddir twice
built on an essentially stock macosx 10.2.8 chroot (aside from cctools-758, gcc-5646.1, and libtool 1.5.27a) libpangoft2 builds fine, doesn't work, unless libharfbuzz is built with optimizations -O3, -Os, or -Oz while leaving no optimization on the other objects produces a functional dylib also of note perhaps, the chroot has stock c run time objects (csu-45), whereas my main environment uses newer ones (csu-58.1.1 built with gcc 3.3 as opposed to gcc 3.1), when i swapped the csu objects out for ones built with 3.1, i was able to reproduce failures also ignore the VPATH comment, idk what's doing that also holla back if you test this plz
Created attachment 154347 [details] [review] Fix for bug 593240 This is just a a work around. The code should be rewritten.
Created attachment 154348 [details] [review] Fix for bug 593240 This is just a a work around. The code should be rewritten.
This is *not* a bug in Apple's tool chain. This problem is caused by very questionable and apparently not portable C++ code: /* Null objects */ /* Global nul-content Null pool. Enlarge as necessary. */ static const char NullPool[32] = ""; /* Generic template for nul-content sizeof-sized Null objects. */ template <typename Type> struct Null { ASSERT_STATIC (sizeof (Type) <= sizeof (NullPool)); static inline const Type &get () { return CONST_CAST (Type, *NullPool, 0); } }; I'm sorry but I'm lost for words. This code is wrong in so many ways. The particular problem which this causes under Mac OS X seems to be related to the lack of alignment of the "NullPool" array. Changing the definition slightly to ... static const void *NullPool[32]; ... avoids the endless CPU loop on my system (with gcc version 4.2.1 (Apple Inc. build 5646) (dot 1)). The important difference might be that Mac OS X doesn't use ELF as the binary format. Please consider to replace this code. I've tested this change under Mac OS 10.6.2 and NetBSD/amd 5.0_STABLE (which does use ELF) and it didn't cause any problems for XChat and Wireshark.
Sure, Matthias, the alignment for the NullPoll can be improved. That's easy. But if you see any other problems with that code, just speak up. Otherwise it will remain as is.
Committed. Please reopen if problem persists. commit ab8d5f6df3171197a7d3913bdf2195bca90fe6de Author: Behdad Esfahbod <behdad@behdad.org> Date: Mon Feb 22 16:03:15 2010 -0500 Ensure proper alignment of NullPool Bug 593240 - (pangoosx) Crash / infinite loop with Mac OS X
Actually thinking about it again, I think the change is unnecessary and there may be a bug somewhere else. That whole code is written in a way to not require any alignment at all. If it's not working, something's broken.
Reopening.
Ok, I believe I've fixed this bug. Please test and report ASAP since I need to make the release for GNOME 2.30 really soon! [HB] Fix the mystery bug! A couple bugs joined forces to exhibit the mystery behavior of crashes / infinite loops on OS X / wrong kerning / invalid memory access. Pooh! The bugs were involved: - Wrong pointer math with ValueRecord in PairPosFormat1 - Fallout from avoiding flex arrays, code not correctly updated to remove sizeof() usage. We strictly never use sizeof() directly now. And the PairPos code is cleaned up. Should fix them all. Bugs are: Bug 605655 - Pango 1.26.2 introduces kerning bug Bug 611229 - Pango reads from uninitialized memory Bug 593240 - (pangoosx) Crash / infinite loop with Mac OS X We were also doing wrong math converting Device adjustments to hb_position_t. Fallout from FreeType days. Should shift 16, not 6. Fixed that too. There's still another bug: we don't sanitize Device records referenced from value records. Fixing that also.
Can you please provide a patch file with these changes for pango 1.26.2?
Matthias: http://git.gnome.org/browse/pango/patch/?id=9cac172f82dd492d068590434199989021be236e
This fix alone does not solve the problem. I tested 1.26.2 with the patch applied.
Reopening then. Anyone can figure out what font is causing this (use pmap or cat /proc/PID/maps on the process and "grep -i font" or something)? I'd have much more luck with the font in hand.
It's just spinning using pango-view with no options. I'll get you more info.
Created attachment 156304 [details] 30s sample of pango-view with 1.26.2 + the pointer math fix Here is a sample using 1.26.2 and the pointer arithmetic fix. Here's a single-point backtrace as well: (gdb) bt
+ Trace 220986
Oh yeah... and /usr/X11/lib/X11/fonts/TTF/VeraSe.ttf is the only font opened.
I'm fairly sure this has already been fixed in HarfBuzz, since we have not received new reports on Firefox about it. But reopen if still present.