Closed Bug 215784 Opened 22 years ago Closed 21 years ago

segmentation violation when clicking on Edit/Preferences/Appearance/Fonts

Categories

(Core Graveyard :: GFX: BeOS, defect)

x86
BeOS
defect
Not set
critical

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: greg.gd, Assigned: sergei_d)

References

Details

(Keywords: crash)

Attachments

(1 file, 2 obsolete files)

User-Agent: Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.5b) Gecko/20030807 Build Identifier: Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.5b) Gecko/20030807 When I go to try and change the font sizes in Edit/Preferences/Appearance/Fonts a crash immediately occurs as I click on Fonts. I also had the same problem in the earlier Mozilla 1.4 milestone release for Beos. Reproducible: Always Steps to Reproduce: 1.Click on Menu item Edit 2.Click on Preferences 3.Click on Appearance 4.Click on Fonts Actual Results: Mozilla crashed with a segmentation violation. This is the debug output from Terminal: loading symbols segment violation occurred FontMatchesGenericType(char *, unsigned long, char const *, char const *): FontMatchesGenericType__FPcUlPCcT2: +0026 ecdae27e: * f3 rep mozilla-bin: Expected Results: Opened the fonts and sizes settings dialog wndow.
Severity: normal → critical
Keywords: crash
Summary: segmentation violation when clicking on Edit/Preferences/Appearance/Fonts → segmentation violation when clicking on Edit/Preferences/Appearance/Fonts
WFM using 2003080304 WinXP.
reporter: do you have windows truetype fonts installed? what version of beos are you using? 5.0.3 PE? if you could attach a font list, that might be helpful. also if you could temporarily remove most of your fonts and try the dialog again to see if it works with the basic font list. if it does then try adding fonts until it breaks. other stuff which would help: line numbers (if you build bezilla yourself) disassembly (if you don't build bezilla yourself) registers if you can find out what the params were to FontMatchesGenericType, that'd be great. stack trace (probably not very useful) some irc network should be able to help you get these details (irc.sorcery.net #bedev/#beos perhaps) if 'help' isn't sufficient.
Assignee: bugs → arougthopher
Component: Preferences → GFX: BeOS
QA Contact: sairuh → timeless
The version of Beos I am using is: RE5.0.3 PE Max Ed v2.1.Here is a list of the fonts I have installed:$ ls /boot/beos/etc/fonts/ttfonts/ANTQUAB.TTF ProFont_9ANTQUABI.TTF SIMSUN.TTFANTQUAI.TTF SYLFAEN.TTFARBLI___.TTF SwKeys2.ttfARIALN.TTF Swiss721.ttfARIALNB.TTF Swiss721_10ARIALNBI.TTF Swiss721_11ARIALNI.TTF Swiss721_12ARIALUNI.TTF Swiss721_9BATANG.TTF Swiss721_Bold.ttfBKANT.TTF Swiss721_BoldItalic.ttfBOOKOS.TTF Swiss721_Bold_12BOOKOSB.TTF Swiss721_ExtraCompressed.ttfBOOKOSBI.TTF Swiss721_Italic.ttfBOOKOSI.TTF Swkeys1.ttfBaskerville.ttf Symbol_Proportional.ttfBaskerville_Bold.ttf Symbol_Proportional_10Baskerville_BoldItalic.ttf Symbol_Proportional_12Baskerville_Italic.ttf Tele.TTFCENTURY.TTF TeleDH.TTFClassicalGaramond.ttf TeleLd.TTFClassicalGaramond_Bold.ttf TeleLdDH.TTFClassicalGaramond_BoldItalic.ttf VAG_Rounded.ttfClassicalGaramond_Italic.ttf VINERITC.TTFCommercialScript.ttf WINGDNG2.TTFCopperplate_Gothic_Bold.ttf WINGDNG3.TTFCourier10Pitch.ttf Zurich.ttfCourier10Pitch_10 Zurich_Bold.ttfCourier10Pitch_12 Zurich_BoldItalic.ttfCourier10Pitch_Bold.ttf Zurich_Italic.ttfCourier10Pitch_BoldItalic.ttf abac.ttfCourier10Pitch_Italic.ttf andmoipa.ttfDutch801.ttf arial.ttfDutch801_10 arialbd.ttfDutch801_12 arialbi.ttfDutch801_Bold.ttf ariali.ttfDutch801_BoldItalic.ttf ariblk.ttfDutch801_Italic.ttf comic.ttfESTRE.TTF comicbd.ttfEmbassy.ttf cour.ttfGARA.TTF courbd.ttfGARABD.TTF courbi.ttfGARAIT.TTF couri.ttfGOTHIC.TTF georgia.ttfGOTHICB.TTF georgiab.ttfGOTHICBI.TTF georgiai.ttfGOTHICI.TTF georgiaz.ttfHATTEN.TTF impact.ttfHumanist777.ttf l_10646.ttfHumanist777_Bold.ttf lucon.ttfHumanist777_BoldItalic.ttf marlett.ttfHumanist777_Italic.ttf micross.ttfLATHA.TTF pala.ttfLBLACK.TTF palab.ttfLBRITE.TTF palabi.ttfLBRITED.TTF palai.ttfLBRITEDI.TTF symbol.ttfLBRITEI.TTF tahoma.ttfLCALLIG.TTF tahomabd.ttfMANGAL.TTF times.ttfMSMINCHO.TTF timesbd.ttfMTCORSVA.TTF timesbi.ttfMonospace821.ttf timesi.ttfMonospace821_Bold.ttf trebuc.ttfMonospace821_BoldItalic.ttf trebucbd.ttfMonospace821_Italic.ttf trebucbi.ttfOCRAExt.TTF trebucit.ttfOUTLOOK.TTF verdana.ttfPAPYRUS.TTF verdanab.ttfPMINGLIU.TTF verdanai.ttfPOORICH.TTF verdanaz.ttfProFont.ttf webdings.ttfProFont_10 wingding.ttf$ $ ls /boot/home/config/fonts/fonts/psfonts/d050000l.afm d050000l.pfb d050000l.pfm
Sorry about the information I put in the last comment. it did not wrap because I was using Net Positive. I will do it again with mozilla. Here is the list of fonts I have installed again: $ ls /boot/beos/etc/fonts/ttfonts/ ANTQUAB.TTF ProFont_9 ANTQUABI.TTF SIMSUN.TTF ANTQUAI.TTF SYLFAEN.TTF ARBLI___.TTF SwKeys2.ttf ARIALN.TTF Swiss721.ttf ARIALNB.TTF Swiss721_10 ARIALNBI.TTF Swiss721_11 ARIALNI.TTF Swiss721_12 ARIALUNI.TTF Swiss721_9 BATANG.TTF Swiss721_Bold.ttf BKANT.TTF Swiss721_BoldItalic.ttf BOOKOS.TTF Swiss721_Bold_12 BOOKOSB.TTF Swiss721_ExtraCompressed.ttf BOOKOSBI.TTF Swiss721_Italic.ttf BOOKOSI.TTF Swkeys1.ttf Baskerville.ttf Symbol_Proportional.ttf Baskerville_Bold.ttf Symbol_Proportional_10 Baskerville_BoldItalic.ttf Symbol_Proportional_12 Baskerville_Italic.ttf Tele.TTF CENTURY.TTF TeleDH.TTF ClassicalGaramond.ttf TeleLd.TTF ClassicalGaramond_Bold.ttf TeleLdDH.TTF ClassicalGaramond_BoldItalic.ttf VAG_Rounded.ttf ClassicalGaramond_Italic.ttf VINERITC.TTF CommercialScript.ttf WINGDNG2.TTF Copperplate_Gothic_Bold.ttf WINGDNG3.TTF Courier10Pitch.ttf Zurich.ttf Courier10Pitch_10 Zurich_Bold.ttf Courier10Pitch_12 Zurich_BoldItalic.ttf Courier10Pitch_Bold.ttf Zurich_Italic.ttf Courier10Pitch_BoldItalic.ttf abac.ttf Courier10Pitch_Italic.ttf andmoipa.ttf Dutch801.ttf arial.ttf Dutch801_10 arialbd.ttf Dutch801_12 arialbi.ttf Dutch801_Bold.ttf ariali.ttf Dutch801_BoldItalic.ttf ariblk.ttf Dutch801_Italic.ttf comic.ttf ESTRE.TTF comicbd.ttf Embassy.ttf cour.ttf GARA.TTF courbd.ttf GARABD.TTF courbi.ttf GARAIT.TTF couri.ttf GOTHIC.TTF georgia.ttf GOTHICB.TTF georgiab.ttf GOTHICBI.TTF georgiai.ttf GOTHICI.TTF georgiaz.ttf HATTEN.TTF impact.ttf Humanist777.ttf l_10646.ttf Humanist777_Bold.ttf lucon.ttf Humanist777_BoldItalic.ttf marlett.ttf Humanist777_Italic.ttf micross.ttf LATHA.TTF pala.ttf LBLACK.TTF palab.ttf LBRITE.TTF palabi.ttf LBRITED.TTF palai.ttf LBRITEDI.TTF symbol.ttf LBRITEI.TTF tahoma.ttf LCALLIG.TTF tahomabd.ttf MANGAL.TTF times.ttf MSMINCHO.TTF timesbd.ttf MTCORSVA.TTF timesbi.ttf Monospace821.ttf timesi.ttf Monospace821_Bold.ttf trebuc.ttf Monospace821_BoldItalic.ttf trebucbd.ttf Monospace821_Italic.ttf trebucbi.ttf OCRAExt.TTF trebucit.ttf OUTLOOK.TTF verdana.ttf PAPYRUS.TTF verdanab.ttf PMINGLIU.TTF verdanai.ttf POORICH.TTF verdanaz.ttf ProFont.ttf webdings.ttf ProFont_10 wingding.ttf $ $ ls /boot/home/config/fonts/fonts/psfonts/ d050000l.afm d050000l.pfb d050000l.pfm
I tried removing most of the fonts and the bug still happens. Here is a list of the fonts I left on my system: Welcome to the BeOS shell. $ ls /boot/beos/etc/fonts/ttfonts/ ARIALN.TTF Courier10Pitch.ttf arial.ttf times.ttf ARIALNB.TTF Courier10Pitch_Bold.ttf arialbd.ttf timesbd.ttf ARIALNBI.TTF Courier10Pitch_BoldItalic.ttf arialbi.ttf timesbi.ttf ARIALNI.TTF Courier10Pitch_Italic.ttf ariali.ttf timesi.ttf $ ls /boot/home/config/fonts/psfonts/ d050000l.afm d050000l.pfb d050000l.pfm $
I just re-installed BeOS Pr0 5, updated to 5.0.3 and downloaded Mozilla 1.5b: Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.5b) Gecko/20030816 I only have the default set of fonts from a fresh install. /boot/beos/etc/fonts/ttfonts> ls Baskerville.ttf Humanist777_BoldItalic.ttf Baskerville_Bold.ttf Humanist777_Italic.ttf Baskerville_BoldItalic.ttf Monospace821.ttf Baskerville_Italic.ttf Monospace821_Bold.ttf ClassicalGaramond.ttf Monospace821_BoldItalic.ttf ClassicalGaramond_Bold.ttf Monospace821_Italic.ttf ClassicalGaramond_BoldItalic.ttf ProFont.ttf ClassicalGaramond_Italic.ttf ProFont_10 CommercialScript.ttf ProFont_9 Copperplate_Gothic_Bold.ttf Swiss721.ttf Courier10Pitch.ttf Swiss721_10 Courier10Pitch_10 Swiss721_11 Courier10Pitch_12 Swiss721_12 Courier10Pitch_Bold.ttf Swiss721_9 Courier10Pitch_BoldItalic.ttf Swiss721_Bold.ttf Courier10Pitch_Italic.ttf Swiss721_BoldItalic.ttf Dutch801.ttf Swiss721_Bold_12 Dutch801_10 Swiss721_ExtraCompressed.ttf Dutch801_12 Swiss721_Italic.ttf Dutch801_Bold.ttf Symbol_Proportional.ttf Dutch801_BoldItalic.ttf Symbol_Proportional_10 Dutch801_Italic.ttf Symbol_Proportional_12 Embassy.ttf VAG_Rounded.ttf Haru.ttf Zurich.ttf Haru_Bold.ttf Zurich_Bold.ttf Haru_Tohaba.ttf Zurich_BoldItalic.ttf Humanist777.ttf Zurich_Italic.ttf Humanist777_Bold.ttf The following is the bebug info from my crash. loading symbols segment violation occurred FontMatchesGenericType(char *, unsigned long, char const *, char const *): FontMatchesGenericType__FPcUlPCcT2: +0026 ed70e27e: * f3 rep mozilla-bin:sc frame retaddr fd000ddc ed70efc7 EnumFonts(char const *, char const *, unsigned int *, unsigned short ***) + 00000093 fd000e64 ed70f089 nsFontEnumeratorBeOS::EnumerateAllFonts(unsigned int *, unsigned short ***) + 00000035 fd000e80 ec75490f XPTC_InvokeByIndex + 00000057 fd000eac ec8dec1d XPCWrappedNative::CallMethod(XPCCallContext &, XPCWrappedNative::CallMode) + 00000c91 fd0010b8 ec8e4002 XPC_WN_CallMethod(JSContext *, JSObject *, unsigned int, long *, long *) + 000000a2 fd001164 ec643563 js_Invoke + 0000058f fd001230 ec64a822 js_Interpret + 00006732 fd0013e8 ec6435b3 js_Invoke + 000005df fd0014a8 ec6437b7 js_InternalInvoke + 000000a7 fd001534 ec624301 JS_CallFunctionValue + 00000031 fd001564 ed7617ba nsJSContext::CallEventHandler(void *, void *, unsigned int, void *, int *, int) + 000001d6 fd0015d8 ed7735cc GlobalWindowImpl::RunTimeout(nsTimeoutImpl *) + 00000478 fd00174c ed773e03 GlobalWindowImpl::TimerCallback(nsITimer *, void *) + 00000023 fd001768 ec74174a nsTimerImpl::Fire(void) + 00000086 fd001788 ec741829 handleTimerEvent(TimerEventType *) + 00000069 fd0017a0 ec73d6a3 PL_HandleEvent + 0000001f fd0017b8 ec73d5c6 PL_ProcessPendingEvents + 0000006a fd0017d0 ec73e3df nsEventQueueImpl::ProcessPendingEvents(void) + 0000003b fd0017f8 ed44f39b nsAppShell::Run(void) + 0000011f fd00181c ed414b50 nsAppShellService::Run(void) + 00000024 fd00182c 80015ac4 main1(int, char **, nsISupports *) + 000008c0 fd001938 80015f0f main + 00000103 fd001964 80011f55 _start + 00000061 mozilla-bin:regs eax ed71e248 ebp fd000ddc cs 001b edx 00000000 esi 00000000 ss 0023 ecx 00000003 edi ed71e248 ds 0023 ebx ed726104 esp fd000dd0 es 0023 fs 527b eflags 00010246 eip ed70e27e trap_no 0000000e error_code 00000004 mozilla-bin: I hope this helps to fix the problem.
I quess I don't really understand the bugzilla process. This bug has been in the BeOS port for over a month, and a couple poeple have commented here about it. How is that this bug is still "Unconfirmed"? Is it that there are so few working on the BeOS port?
This is still a problem. Extremely annoying.
Status: UNCONFIRMED → NEW
Ever confirmed: true
cannot reproduce this bug here. at least in 1.5b with those two big patches from bugzilla for nsWindow* and for gfx folder. Haven't time at moment to try with unpatched sources
The mozilla browser that comes with Beos 5.03 PE MaxEdition V3 does not seem to have this bug -Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.5b) Gecko/20030904. I tried this in Beos 5.03 PE MaxEdition V2.1 and the the bug never showed up there either.
An explanation is probably in order... The crash is in libc strcmp which isn't null safe. nsFontEnumeratorBeOS::EnumerateAllFonts(PRUint32* aCount, PRUnichar*** aResult) return EnumFonts(nsnull, nsnull, aCount, aResult); ^^^^^^ aLangGroup vvvvvvvvvv static nsresult EnumFonts(const char * aLangGroup, const char* aGeneric, PRUint32* aCount, PRUnichar*** aResult) if (family && FontMatchesGenericType(family, flags, aGeneric, aLangGroup) && MatchesLangGroup(family, aLangGroup)) ^^^^^^^^^^ ^^^^^^^^^^ 501 arougthopher 1.23 502 static int 503 FontMatchesGenericType(font_family family, uint32 flags, const char* aGeneric, 504 const char* aLangGroup) 505 { 506 if (!strcmp(aLangGroup, "ja")) Until 1.23 EnumFonts discarded the aLangGroup field: ttp://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/gfx/src/beos/nsFontMetricsBeOS.cpp&rev=1.22 The new code used it without nullchecking. I suspect this was ok until someone in xpfe decided to actually ask gfx for all fonts.
Assignee: arougthopher → timeless
Checking in nsFontMetricsBeOS.cpp; /cvsroot/mozilla/gfx/src/beos/nsFontMetricsBeOS.cpp,v <-- nsFontMetricsBeOS.cpp new revision: 1.33; previous revision: 1.32
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Depends on: 142511
Yeah, in newer Mozilla versions Preferences panel shows all fonts, not only those mathing criteria. "Proper" fonts are above, all other below horizontal line.
This bug is still occuring in Mozilla versions after the version that came with R5.0.3 PE Max Ed v3. This Mozilla version is: Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.5b) Gecko/20030904. I have tried other versions up to Mozilla 1.5 just browser release and the full Mozilla browser inbetween. There seems to be something different about the R5.0.3 PE Max Ed v3 Mozilla. I was wondering if it was the way the settings for this browser were setup with PE Max Ed v3, on install, but since I used it with no problems previously, in Pe Max Ed v2.1 and had to run mozilla scipt first time from the terminal, this cannot be the reason. If this is not just something about the way I have installed mozilla, why has this bug been put as resolved.
This Mozilla version is: Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.5b) Gecko/20030904. yyyymmdd = sept 4, 2003 note the date of Comment #12: 2003-10-16 09:12, It's more than a month after the build you're trying to use. I'm sorry, I travel, I don't time travel.
I probably did not make myself clear in comment # 14. What I meant was that this bug does not occur in this version "Mozilla/5.0 (BeOS; U; BeOS BePC; en-US; rv:1.5b) Gecko/20030904" but is in versions after it.
Still crashes. Especially under Dano-based OS-es. And especially on non-western (cyrillic) preferences. Problem appeared, it seems, since patch fro bug 206782. Reason - strstr(family, aGeneric)in FontMatchesGenericType() crashes if nsnull=aGeneric. Dunno, why. maybe nsnull is incompatible with 0 (as end of string)? Workaround until big nsFontMetricsBeOS rewrite (planned) - check for nsnull=aGeneric BEFORE strstr and return 1 ("matches") in that case.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
typical sc: loading symbols segment violation occurred strstr: strstr: +0023 ec050243: * 168a movb (%esi), %dl mozilla-bin:sc frame retaddr fcffb9f0 ee9283ed FontMatchesGenericType(char *, unsigned long, char const *, char const *) + 000000fd fcffba0c ee92905a EnumFonts(char const *, char const *, unsigned int *, unsigned short ***) + 0000009a fcffba94 ee9291b0 nsFontEnumeratorBeOS::EnumerateFonts(char const *, char const *, unsigned int *, unsigned short ***) + 00000060 fcffbab8 ee20384f XPTC_InvokeByIndex + 00000057 fcffbaf4 ee36945d XPCWrappedNative::CallMethod(XPCCallContext &, XPCWrappedNative::CallMode) + 00000c9d fcffbcf8 ee36e964 XPC_WN_CallMethod(JSContext *, JSObject *, unsigned int, long *, long *) + 000000a4 fcffbda4 ec6853d0 js_Invoke + 00000650 fcffbe60 ec68c375 js_Interpret + 000067e5 fcffbfd0 ec68541d js_Invoke + 0000069d fcffc080 ec685617 js_InternalInvoke + 000000a7 fcffc108 ec666491 JS_CallFunctionValue + 00000031 fcffc138 ee97ba52 nsJSContext::CallEventHandler(void *, void *, unsigned int, void *, int *) + 000001b2 fcffc19c ee98cbfd GlobalWindowImpl::RunTimeout(nsTimeoutImpl *) + 0000037d fcffc2e8 ee98d437 GlobalWindowImpl::TimerCallback(nsITimer *, void *) + 00000023 fcffc304 ee1f00a1 nsTimerImpl::Fire(void) + 00000081 fcffc324 ee1f018e handleTimerEvent(TimerEventType *) + 0000006e fcffc33c ee1eccaf PL_HandleEvent + 0000001f fcffc354 ee1ecbd4 PL_ProcessPendingEvents + 00000074 fcffc36c ee1eda7b nsEventQueueImpl::ProcessPendingEvents(void) + 0000003b fcffc394 ee60f75e nsAppShell::Run(void) + 0000011e fcffc3b4 ee5d3308 nsAppShellService::Run(void) + 00000024 fcffc3c4 80013661 BLooper::SetCommonFilterList(BList *) + 00013661 fcffc4d8 80012685 BLooper::SetCommonFilterList(BList *) + 00012685 fcffc504 800122b5 BLooper::SetCommonFilterList(BList *) + 000122b5 what happens in printout printf("font %s\n", (char *)family); in FontMatchesGenericType() - it scans all fonts at least 3 times (for different aGenerics), then printouts first font from list again and crashes.
nsnull is 0, there's code which doesn't like zero which is why it crashes...
Attached patch Patch (diff -r HEAD -up7) (obsolete) — Splinter Review
See previous comments. For nsnull argument, we always return 4.
Comment on attachment 139589 [details] [diff] [review] Patch (diff -r HEAD -up7) review request sorry, there was typo in previous comment. we return 1.
Attachment #139589 - Flags: review?(cbiesinger)
Comment on attachment 139589 [details] [diff] [review] Patch (diff -r HEAD -up7) + //Return 1 immediately, because 0/nsnull as argument of strstr causes crashes change 0/nsnull to just nsnull... they are equivalent also, turn tabs into spaces as for your utf8 question, see http://lxr.mozilla.org/seamonkey/source/xpcom/string/public/nsReadableUtils.h#1 64
Attachment #139589 - Flags: review?(cbiesinger) → review-
Attached patch Patch (diff -up7 -r HEAD) (obsolete) — Splinter Review
tabs removed, temporary comments in code removed
Attachment #139589 - Attachment is obsolete: true
Comment on attachment 139598 [details] [diff] [review] Patch (diff -up7 -r HEAD) + if(FontMatchesGenericType(family, flags, aGeneric, aLangGroup)) + { + font_name.AssignWithConversion(family); + if (!(array[j] = ToNewUnicode(font_name))) + break; + ++j; + } the indentation here seems wrong...
Attachment #139598 - Flags: review-
last attempt for today.
Attachment #139598 - Attachment is obsolete: true
Assignee: timeless → sergei_d
Status: REOPENED → NEW
checked in
Status: NEW → RESOLVED
Closed: 21 years ago21 years ago
Resolution: --- → FIXED
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: