RESOLVED FIXED Bug 188032
[WIN] Crash when trying to access store pages
https://bugs.webkit.org/show_bug.cgi?id=188032
Summary [WIN] Crash when trying to access store pages
Myles C. Maxfield
Reported 2018-07-25 17:39:08 PDT
[WIN] Regression(r213614): Crash when trying to access store pages
Attachments
Patch (3.26 KB, patch)
2018-07-25 17:39 PDT, Myles C. Maxfield
no flags
Archive of layout-test-results from ews206 for win-future (12.81 MB, application/zip)
2018-07-26 04:35 PDT, EWS Watchlist
no flags
Patch (17.89 KB, patch)
2018-07-26 19:40 PDT, Myles C. Maxfield
no flags
Patch (17.88 KB, patch)
2018-07-26 23:46 PDT, Myles C. Maxfield
no flags
Patch (17.90 KB, patch)
2018-07-27 09:16 PDT, Myles C. Maxfield
ews-watchlist: commit-queue-
Archive of layout-test-results from ews204 for win-future (12.89 MB, application/zip)
2018-07-27 11:12 PDT, EWS Watchlist
no flags
Myles C. Maxfield
Comment 1 2018-07-25 17:39:57 PDT
Radar WebKit Bug Importer
Comment 2 2018-07-25 18:01:24 PDT
Brent Fulgham
Comment 3 2018-07-25 18:01:53 PDT
Comment on attachment 345806 [details] Patch R=me if the boys are happy.
Brent Fulgham
Comment 4 2018-07-25 18:03:24 PDT
S/boys/bots/
Myles C. Maxfield
Comment 5 2018-07-25 18:39:19 PDT
John N. Lehner
Comment 6 2018-07-25 21:47:07 PDT
This won't fix rdar://problem/42467016; WebKit!WebCore::FontCascade::widthOfTextRange() is not called prior to the overflow in WebCore::GlyphBuffer::offsetAt(). Because WebCore::DisplayList::Replayer::replay() is on the stack at the time of overflow I compared WebCore::TextPainter::paintTextOrEmphasisMarks() in our previous release with today and m_context.drawEmphasisMarks(font, textRun, emphasisMark, textOrigin + FloatSize(0, emphasisMarkOffset), startOffset, endOffset); was changed to // Replaying back a whole cached glyph run to the GraphicsContext. m_context.translate(textOrigin); DisplayList::Replayer replayer(m_context, *m_glyphDisplayList); replayer.replay(); m_context.translate(-textOrigin); If I patch out the DisplayList::Replayer::replay() call with a 5-byte NOP, the crash goes away.
Myles C. Maxfield
Comment 7 2018-07-25 22:21:38 PDT
(In reply to John N. Lehner from comment #6) > This won't fix rdar://problem/42467016; > WebKit!WebCore::FontCascade::widthOfTextRange() is not called prior to the > overflow in WebCore::GlyphBuffer::offsetAt(). > > Because WebCore::DisplayList::Replayer::replay() is on the stack at the time > of overflow I compared WebCore::TextPainter::paintTextOrEmphasisMarks() in > our previous release with today and > > m_context.drawEmphasisMarks(font, textRun, emphasisMark, textOrigin + > FloatSize(0, emphasisMarkOffset), startOffset, endOffset); > > was changed to > > // Replaying back a whole cached glyph run to the GraphicsContext. > m_context.translate(textOrigin); > DisplayList::Replayer replayer(m_context, *m_glyphDisplayList); > replayer.replay(); > m_context.translate(-textOrigin); > > If I patch out the DisplayList::Replayer::replay() call with a 5-byte NOP, > the crash goes away. Ah, okay! That definitely helps.
Myles C. Maxfield
Comment 8 2018-07-25 22:26:38 PDT
Looks like https://bugs.webkit.org/show_bug.cgi?id=178750 enabled display list usage without an easy way to disable it on Windows
John N. Lehner
Comment 9 2018-07-25 22:29:09 PDT
To clarify for open source, the generateGlyphBuffer() call in WebCore::DisplayList::DrawGlyphs::apply() uses the GlyphBufferAdvance overload of GlyphBuffer::add() (!USE(WINGDI)) and that doesn't update m_offsets like void add(Glyph glyph, const Font* font, float width, unsigned offsetInString = noOffset, const FloatSize* offset = 0) does, so WebCore::GlyphBuffer::offsetAt() generates the CrashOnOverflow
Myles C. Maxfield
Comment 10 2018-07-25 22:30:35 PDT
(In reply to Myles C. Maxfield from comment #8) > Looks like https://bugs.webkit.org/show_bug.cgi?id=178750 enabled display > list usage without an easy way to disable it on Windows Fixing display lists to work on Windows requires either getting rid of the offsets member of GlyphBuffer or recording all the offsets in the DrawGlyphs object.
Myles C. Maxfield
Comment 11 2018-07-25 22:31:31 PDT
Tomorrow I'll get rid of the offsets member of GlyphBuffer.
EWS Watchlist
Comment 12 2018-07-26 04:35:25 PDT
Comment on attachment 345806 [details] Patch Attachment 345806 [details] did not pass win-ews (win): Output: https://webkit-queues.webkit.org/results/8661025 New failing tests: http/tests/security/canvas-remote-read-remote-video-localhost.html
EWS Watchlist
Comment 13 2018-07-26 04:35:37 PDT
Created attachment 345838 [details] Archive of layout-test-results from ews206 for win-future The attached test failures were seen while running run-webkit-tests on the win-ews. Bot: ews206 Port: win-future Platform: CYGWIN_NT-6.1-2.9.0-0.318-5-3-x86_64-64bit
Myles C. Maxfield
Comment 14 2018-07-26 19:40:12 PDT
Myles C. Maxfield
Comment 15 2018-07-26 23:46:13 PDT
Myles C. Maxfield
Comment 16 2018-07-27 09:16:28 PDT
EWS Watchlist
Comment 17 2018-07-27 11:12:20 PDT
Comment on attachment 345917 [details] Patch Attachment 345917 [details] did not pass win-ews (win): Output: https://webkit-queues.webkit.org/results/8673844 New failing tests: fast/text/initial-advance-in-intermediate-run-complex.html fast/text/complex-first-glyph-with-initial-advance.html
EWS Watchlist
Comment 18 2018-07-27 11:12:32 PDT
Created attachment 345930 [details] Archive of layout-test-results from ews204 for win-future The attached test failures were seen while running run-webkit-tests on the win-ews. Bot: ews204 Port: win-future Platform: CYGWIN_NT-6.1-2.9.0-0.318-5-3-x86_64-64bit
Myles C. Maxfield
Comment 19 2018-07-27 11:19:00 PDT
Landing despite test failures because this will fix the crash; looking into the failures today.
Myles C. Maxfield
Comment 20 2018-07-27 11:21:29 PDT
mitz
Comment 21 2018-07-30 09:37:10 PDT
(In reply to Myles C. Maxfield from comment #20) > Committed r234318: <https://trac.webkit.org/changeset/234318> This appears to have caused bug 188168.
mitz
Comment 22 2018-07-30 09:37:56 PDT
(In reply to mitz from comment #21) > (In reply to Myles C. Maxfield from comment #20) > > Committed r234318: <https://trac.webkit.org/changeset/234318> > > This appears to have caused bug 188168. Oh, I guess EWS has warned of this in comment 17.
Note You need to log in before you can comment on or make changes to this bug.