MantisBT - Community
View Issue Details
0032435Community[OCCT] OCCT:Visualizationpublic2021-06-11 15:122021-09-09 21:31
Vico Liang 
kgv 
normalcrash 
newopen 
Android
[OCCT] 7.5.2 
[OCCT] 7.7.0 
0032435: Visualization, TKOpenGles - crash inside Opengl ES on Adreno 506 android devices
Latest updated to OCCT7.5.2, New crash from google play console. It seems the crash inside opengl es. The stacktrace as below:

Affected device:
Samsung Galaxy A20s, Android 10 (SDK 29)
Xiaomi Redmi 7, Android 10 (SDK 29)


  #00 pc 000000000007f338 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+296)
  #00 pc 00000000001c19c8 /vendor/lib64/egl/libGLESv2_adreno.so
  #00 pc 000000000037d098 /vendor/lib64/egl/libGLESv2_adreno.so
  #00 pc 000000000034dde8 /vendor/lib64/egl/libGLESv2_adreno.so
  #00 pc 000000000033ad90 /vendor/lib64/egl/libGLESv2_adreno.so
  #00 pc 0000000000102680 /vendor/lib64/egl/libGLESv2_adreno.so
  #00 pc 00000000000fbdb4 /vendor/lib64/egl/libGLESv2_adreno.so
  #00 pc 00000000013e2a28 /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_PrimitiveArray::drawArray(opencascade::handle<OpenGl_Workspace> const&, NCollection_Vec4<float> const*, bool) const+436)
  #00 pc 00000000013e413c /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_PrimitiveArray::Render(opencascade::handle<OpenGl_Workspace> const&) const+1804)
  #00 pc 00000000013e07b0 /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_Group::Render(opencascade::handle<OpenGl_Workspace> const&) const+212)
  #00 pc 0000000001395608 /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_Structure::renderGeometry(opencascade::handle<OpenGl_Workspace> const&, bool&) const+108)
  #00 pc 0000000001395bb8 /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_Structure::Render(opencascade::handle<OpenGl_Workspace> const&) const+1428)
  #00 pc 00000000013cc594 /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_LayerList::renderLayer(opencascade::handle<OpenGl_Workspace> const&, OpenGl_GlobalLayerSettings const&, Graphic3d_Layer const&) const+988)
  #00 pc 00000000013cccec /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_LayerList::Render(opencascade::handle<OpenGl_Workspace> const&, bool, OpenGl_LayerFilter, OpenGl_FrameBuffer*, OpenGl_FrameBuffer*) const+1116)
  #00 pc 00000000013ab534 /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_View::renderStructs(Graphic3d_Camera::Projection, OpenGl_FrameBuffer*, OpenGl_FrameBuffer*, bool)+276)
  #00 pc 00000000013ab7a8 /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_View::renderScene(Graphic3d_Camera::Projection, OpenGl_FrameBuffer*, OpenGl_FrameBuffer*, bool)+140)
  #00 pc 00000000013ab0c4 /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_View::render(Graphic3d_Camera::Projection, OpenGl_FrameBuffer*, OpenGl_FrameBuffer*, bool)+1096)
  #00 pc 00000000013aa850 /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_View::redraw(Graphic3d_Camera::Projection, OpenGl_FrameBuffer*, OpenGl_FrameBuffer*)+556)
  #00 pc 00000000013a8430 /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (OpenGl_View::Redraw()+1408)
  #00 pc 00000000013eddc4 /data/app/com.xxx.xxx-ooz-Ljm7v4ASv-_zr9VF5Q==/lib/arm64/libXXX_arm64-v8a.so (V3d_View::Redraw() const+108)



  #00 pc 000000000005d15c /apex/com.android.runtime/lib/bionic/libc.so (__memcpy_a53+108)
  #00 pc 00000000002327a5 /vendor/lib/egl/libGLESv2_adreno.so
  #00 pc 000000000020dde1 /vendor/lib/egl/libGLESv2_adreno.so
  #00 pc 00000000000827ab /vendor/lib/egl/libGLESv2_adreno.so
  #00 pc 000000000007cd8f /vendor/lib/egl/libGLESv2_adreno.so
  #00 pc 00000000000b26ef /vendor/lib/egl/libGLESv2_adreno.so
  #00 pc 0000000000053bcf /vendor/lib/egl/libGLESv2_adreno.so (glDrawElements+42)
  #00 pc 0000000000f524e3 /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_PrimitiveArray::drawArray(opencascade::handle<OpenGl_Workspace> const&, NCollection_Vec4<float> const*, bool) const+274)
  #00 pc 0000000000f53043 /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_PrimitiveArray::Render(opencascade::handle<OpenGl_Workspace> const&) const+858)
  #00 pc 0000000000f50f25 /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_Group::renderFiltered(opencascade::handle<OpenGl_Workspace> const&, OpenGl_Element*) const+28)
  #00 pc 0000000000f50f81 /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_Group::Render(opencascade::handle<OpenGl_Workspace> const&) const+82)
  #00 pc 0000000000f16087 /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_Structure::renderGeometry(opencascade::handle<OpenGl_Workspace> const&, bool&) const+62)
  #00 pc 0000000000f1634d /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_Structure::Render(opencascade::handle<OpenGl_Workspace> const&) const+696)
  #00 pc 0000000000f4593b /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_LayerList::renderLayer(opencascade::handle<OpenGl_Workspace> const&, OpenGl_GlobalLayerSettings const&, Graphic3d_Layer const&) const+646)
  #00 pc 0000000000f45d23 /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_LayerList::Render(opencascade::handle<OpenGl_Workspace> const&, bool, OpenGl_LayerFilter, OpenGl_FrameBuffer*, OpenGl_FrameBuffer*) const+618)
  #00 pc 0000000000f3335b /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_View::renderStructs(Graphic3d_Camera::Projection, OpenGl_FrameBuffer*, OpenGl_FrameBuffer*, bool)+178)
  #00 pc 0000000000f334eb /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_View::renderScene(Graphic3d_Camera::Projection, OpenGl_FrameBuffer*, OpenGl_FrameBuffer*, bool)+90)
  #00 pc 0000000000f33155 /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_View::render(Graphic3d_Camera::Projection, OpenGl_FrameBuffer*, OpenGl_FrameBuffer*, bool)+744)
  #00 pc 0000000000f32bbb /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_View::redraw(Graphic3d_Camera::Projection, OpenGl_FrameBuffer*, OpenGl_FrameBuffer*)+242)
  #00 pc 0000000000f31689 /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (OpenGl_View::Redraw()+936)
  #00 pc 0000000000f576eb /data/app/com.xxx.xxx-V7Crmc2bF-thoA4so3Q7ag==/lib/arm/libXXX_armeabi-v7a.so (V3d_View::Redraw() const+94)
No tags attached.
related to 0032504new kgv Visualization, TKOpenGles - Crash inside drawArray on android platform 
Issue History
2021-06-11 15:12Vico LiangNew Issue
2021-06-11 15:12Vico LiangAssigned To => kgv
2021-06-11 15:16Vico LiangDescription Updatedbug_revision_view_page.php?rev_id=25356#r25356
2021-06-11 15:58kgvSummaryCrash inside opengl es on some android device => Visualization, TKOpenGles - crash inside Opengl ES on Adreno 506 android devices
2021-06-11 15:59kgvNote Added: 0101785
2021-06-11 17:24Vico LiangNote Added: 0101790
2021-06-15 15:57kgvNote Added: 0101842
2021-08-24 14:30kgvRelationship addedrelated to 0032504
2021-09-09 21:31kgvTarget Version7.6.0* => 7.7.0

Notes
(0101785)
kgv   
2021-06-11 15:59   
Unfortunately, this stack trace will not help to identify the problem cause.
(0101790)
Vico Liang   
2021-06-11 17:24   
Dear Kirill, QOpenGLFramebufferObject was wrapped as OpenGl_FrameBuffer, do you think it might be the cause?
(0101842)
kgv   
2021-06-15 15:57   
Broken wrapping of QOpenGLFramebufferObject into OpenGl_FrameBuffer might cause issues (for example, if gluing layer in application code doesn't update OpenGl_FrameBuffer after QOpenGLFramebufferObject modifications), but the problem origin couldn't be trivially determined from currently available information.

The crash happens inside OpenGL ES driver, and the reason could be very different (up to the bug within the driver itself, triggered by a combination of many factors).

OpenGl_Caps::contextDebug=true + QSurfaceFormat.setOption(QSurfaceFormat::DebugContext) + verbose log might give a better idea if OpenGL is misused somewhere, but this is possible only if you have a device and reproducible crash scenario at hand.