Created attachment 606329 [details]
###!!! ASSERTION: unexpected state: 'aRenderingContext.FontMetrics()->Font(). Equals(aFontMetrics->Font())', file layout/mathml/nsMathMLFrame.cpp, line 338
Created attachment 606330 [details]
I haven't managed to reproduce on Linux x86_64.
The stack doesn't seem to quite line up with the assertion. If the stack is off by one frame and one line, then that would locate the GetAxisHeight call here:
Given the rendContext->SetFont(fm) immediately prior, I would expect rendContext->FontMetrics() to return fm.
I don't see any obvious problem with nsFont::Equals.
I can reproduce on Linux x86_64, even with an empty profile.
Created attachment 611107 [details]
stack trace from linux
Is this more helpful?
That trace confirms the GetAxisHeight call in comment 2, thanks.
I can reproduce now. Seems that this is regression since 7e158ac25de3.
Will narrow down further.
Regression from http://hg.mozilla.org/mozilla-central/rev/edc0871b4e5b
Other than this being a regression, what's the justification for tracking this bug? Will this be a common error for MathML users? In what state is the user left when they run into this?
The bug doesn't affect this MathML testcase adversely (from a user perspective).
What the assertion is highlighting is that, for string |a|, a.Equals(a) is false (perhaps only for a certain comparator), which is likely to have wider ranging affects. Perhaps the problem is only for non-BMP characters, but a problem with surrogates may be a problem with array index counting.
Created attachment 612457 [details] [diff] [review]
patch, fix surrogate handling during string compare
Argh - silly typo!
It's kinda scary that it took an obscure feature (fonts in MathML) to uncover a unicharutil bug. How can that be remedied?