Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-58808

Unicode emojis resulting in Segfault when used on Android

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • P1: Critical
    • None
    • 5.7, 5.8
    • None
    • Android 6, Moto E3. Moto G4, Samsung Galaxy S7
    • Android

    Description

      When using unicode emojis inside a text element in RichtText Mode on Android, it likely produces a segfault in OpenGl

      crashes when inserting certain unicode( e.g. U+1F508) symbols into TextEdit:

      TextArea {
                              id: messageInput
                              textFormat: TextEdit.PlainText
                              placeholderText: "message"
                              wrapMode: TextArea.Wrap
                              Layout.fillWidth: true
                              activeFocusOnPress: true
                              focus: focusMessageInput
                              background: Rectangle {
                                  radius: 2
                                  border.color: "grey"
                              }
                          }
      

      I get:

      I SurfaceView: updateWindow -- setFrame, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      V InputMethodManager: START INPUT: org.qtproject.qt5.android.QtEditText{5be412e VFED..... .F...... 240,1066-592,1128} ic=org.qtproject.qt5.android.QtInputConnection@5a5ecb tba=android.view.inputmethod.EditorInfo@b5e66a8 controlFlags=#100
      V InputMethodManager: START INPUT: org.qtproject.qt5.android.QtEditText{5be412e VFED..... .F...... 240,1066-592,1128} ic=org.qtproject.qt5.android.QtInputConnection@86915c1 tba=android.view.inputmethod.EditorInfo@da54166 controlFlags=#0
      I [MALI][Gralloc]: [+]r_hnd(0x99f0a4e0), client(28), share_fd(61)
      D GraphicBuffer: register, handle(0x99f0a4e0) (w:720 h:1280 s:720 f:0x1 u:0x000b00)
      I SurfaceView: updateWindow -- setFrame, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ......I. 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ......I. 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- setFrame, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ......I. 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ......I. 0,0-720,1136 #1}
      I SurfaceView: Punch a hole(dispatchDraw), w = 720, h = 1136, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Changes: creating=false format=false size=false visible=false left=false top=true mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Cur surface: Surface(name=null)/@0x7ea06af, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: New surface: Surface(name=null)/@0x7085abc, vis=true, frame=Rect(0, -42 - 720, 1094), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      V SurfaceView: Layout: x=0 y=-42 w=720 h=1136, frame=Rect(0, 0 - 720, 1136), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Changes: creating=false format=false size=false visible=false left=false top=true mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Cur surface: Surface(name=null)/@0x7ea06af, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: New surface: Surface(name=null)/@0x7085abc, vis=true, frame=Rect(0, -208 - 720, 928), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      V SurfaceView: Layout: x=0 y=-208 w=720 h=1136, frame=Rect(0, 0 - 720, 1136), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Changes: creating=false format=false size=false visible=false left=false top=true mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Cur surface: Surface(name=null)/@0x7ea06af, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: New surface: Surface(name=null)/@0x7085abc, vis=true, frame=Rect(0, -315 - 720, 821), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      V SurfaceView: Layout: x=0 y=-315 w=720 h=1136, frame=Rect(0, 0 - 720, 1136), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Changes: creating=false format=false size=false visible=false left=false top=true mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Cur surface: Surface(name=null)/@0x7ea06af, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: New surface: Surface(name=null)/@0x7085abc, vis=true, frame=Rect(0, -398 - 720, 738), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      V SurfaceView: Layout: x=0 y=-398 w=720 h=1136, frame=Rect(0, 0 - 720, 1136), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Changes: creating=false format=false size=false visible=false left=false top=true mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Cur surface: Surface(name=null)/@0x7ea06af, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: New surface: Surface(name=null)/@0x7085abc, vis=true, frame=Rect(0, -421 - 720, 715), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      V SurfaceView: Layout: x=0 y=-421 w=720 h=1136, frame=Rect(0, 0 - 720, 1136), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Changes: creating=false format=false size=false visible=false left=false top=true mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Cur surface: Surface(name=null)/@0x7ea06af, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: New surface: Surface(name=null)/@0x7085abc, vis=true, frame=Rect(0, -432 - 720, 704), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      V SurfaceView: Layout: x=0 y=-432 w=720 h=1136, frame=Rect(0, 0 - 720, 1136), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Changes: creating=false format=false size=false visible=false left=false top=true mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Cur surface: Surface(name=null)/@0x7ea06af, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: New surface: Surface(name=null)/@0x7085abc, vis=true, frame=Rect(0, -437 - 720, 699), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      V SurfaceView: Layout: x=0 y=-437 w=720 h=1136, frame=Rect(0, 0 - 720, 1136), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Changes: creating=false format=false size=false visible=false left=false top=true mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Cur surface: Surface(name=null)/@0x7ea06af, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: New surface: Surface(name=null)/@0x7085abc, vis=true, frame=Rect(0, -439 - 720, 697), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      V SurfaceView: Layout: x=0 y=-439 w=720 h=1136, frame=Rect(0, 0 - 720, 1136), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Changes: creating=false format=false size=false visible=false left=false top=true mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Cur surface: Surface(name=null)/@0x7ea06af, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: New surface: Surface(name=null)/@0x7085abc, vis=true, frame=Rect(0, -441 - 720, 695), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      V SurfaceView: Layout: x=0 y=-441 w=720 h=1136, frame=Rect(0, 0 - 720, 1136), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I System  : FinalizerDaemon: finalize objects = 2095
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Changes: creating=false format=false size=false visible=false left=false top=true mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: Cur surface: Surface(name=null)/@0x7ea06af, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: New surface: Surface(name=null)/@0x7085abc, vis=true, frame=Rect(0, -442 - 720, 694), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      V SurfaceView: Layout: x=0 y=-442 w=720 h=1136, frame=Rect(0, 0 - 720, 1136), this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      I SurfaceView: updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{665ee8e V.E...... ........ 0,0-720,1136 #1}
      F libc    : Fatal signal 11 (SIGSEGV), code 2, fault addr 0x99e3da38 in tid 6832 (QtThread)
      

      the same thing happens very often but not always, with Text inside ListView :

      Text {
              id: messageText
              smooth:true
              text: model.msg
              font.family: "opensans"
              font.pointSize: fonts.baseFontSize
              textFormat: Text.RichText
              color: "black"
      //        anchors.fill: parent
              wrapMode: Text.Wrap
              onLinkActivated: {
                  Qt.openUrlExternally(link)
              }
          }
      

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              esabraha Eskil Abrahamsen Blomfeldt
              armin.felder Armin Felder
              Votes:
              4 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes