Bug 24514 - CANVAS Text APIs crash on arm target
Summary: CANVAS Text APIs crash on arm target
Status: UNCONFIRMED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Platform (show other bugs)
Version: 528+ (Nightly build)
Hardware: Other Linux
: P2 Normal
Assignee: Nobody
URL: http://tinyurl.com/btz3z5, http://tin...
Keywords:
Depends on:
Blocks:
 
Reported: 2009-03-11 05:16 PDT by Sriram Neelakandan
Modified: 2010-06-10 16:43 PDT (History)
0 users

See Also:


Attachments
Fix CANVAS Text API crash (1.13 KB, patch)
2009-03-11 05:19 PDT, Sriram Neelakandan
staikos: review-
Details | Formatted Diff | Diff
Back trace (12.48 KB, text/plain)
2009-03-11 05:50 PDT, Sriram Neelakandan
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sriram Neelakandan 2009-03-11 05:16:46 PDT
CANVAS Text APIs always crashes on  arm-target.
It works fine on the PC though.

I have narrowed down the issue to a TextRun copy constructor not working in GraphicsContext::drawBidiText().
may be due to my arm-linux-gcc (GCC) 3.4.6.

Patch coming soon
Comment 1 Sriram Neelakandan 2009-03-11 05:19:35 PDT
Created attachment 28475 [details]
Fix CANVAS Text API crash
Comment 2 George Staikos 2009-03-11 05:27:01 PDT
Comment on attachment 28475 [details]
Fix CANVAS Text API crash

Can't be right.  Loses information (all the other fields), is used elsewhere safely, and seems to be bitwise copy safe.  I think the bug must be elsewhere.
Comment 3 Sriram Neelakandan 2009-03-11 05:50:38 PDT
Created attachment 28476 [details]
Back trace

Back trace of the crash on arm.
mixed assembler listing of the function is also present.
Comment 4 Sriram Neelakandan 2009-03-11 07:58:03 PDT
George you are right ! 

I found a weird fix for the problem

       TextRun subrun = run;
+       printf("Hello\n");
        subrun.setText(run.data(bidiRun->start()), bidiRun->stop() - bidiRun->start());
        subrun.setRTL(bidiRun->level() % 2);
        subrun.setDirectionalOverride(bidiRun->dirOverride(false));

Just that printf, Fixes the crash !
I am sure the compiler is upto something :(