Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
5.5.0, 5.6.0, 5.7.0
-
None
-
Debian wheezy, ARMv7 Processor rev 10 (v7l)
Description
Qt Quick applications spontaneously crash on Vivante with the following backtrace:
#0 __libc_do_syscall () at ../ports/sysdeps/unix/sysv/linux/arm/eabi/libc-do-syscall.S:47 #1 0x75bf9142 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:67 #2 0x75bfb56e in __GI_abort () at abort.c:91 #3 0x75c1ef38 in __libc_message (do_abort=2, fmt=0x75c9d400 "*** glibc detected *** %s: %s: 0x%s ***\n") at ../sysdeps/unix/sysv/linux/libc_fatal.c:201 #4 0x75c2597a in malloc_printerr (action=3, str=0x75c9d560 "double free or corruption (top)", ptr=<optimized out>) at malloc.c:5039 #5 0x755f7574 in gcoOS_FreeMemory () from /usr/lib/galcore/libGAL.so #6 0x755f75e8 in gcoOS_Free () from /usr/lib/galcore/libGAL.so #7 0x755eb4b4 in ?? () from /usr/lib/galcore/libGAL.so Backtrace stopped: previous frame identical to this frame (corrupt stack?)
I reproduce it by running several instances of examples/quick/demos/clocks/clocks in parallel.
With 'git bisect' I found that the bug was introduced by a83246146854166a54ee1f9bd4f8911d6bd49602 (Fix the vertex ordering of merged triangle strips). But it looks like it was actually introduced by the preceding commit a371bac3fba73f92aaa63a68d8ab1ae81a1d1031 ("Reuse the memory we use for vertex uploads", https://codereview.qt-project.org/#/c/102934/ ) which mentions that some drivers may have broken index buffer support.
EGL_VERSION: 1.4 EGL_VENDOR: Vivante Corporation EGL_EXTENSIONS: EGL_KHR_reusable_sync, EGL_KHR_fence_sync, EGL_KHR_image, EGL_KHR_image_base, EGL_KHR_image_pixmap, EGL_KHR_gl_texture_2D_image, EGL_KHR_gl_texture_cubemap_image, EGL_KHR_gl_renderbuffer_image, EGL_KHR_lock_surface, EGL_KHR_create_context, EGL_EXT_create_context_robustness, EGL_EXT_buffer_age, EGL_EXT_protected_surface EGL_CLIENT_APIS: OpenGL_ES OpenVG GL_VERSION: OpenGL ES 3.0 V5.0.11.p4.25762 GL_RENDERER: Vivante GC2000 GL_EXTENSIONS: GL_OES_vertex_type_10_10_10_2, GL_OES_vertex_half_float, GL_OES_element_index_uint, GL_OES_mapbuffer, GL_OES_vertex_array_object, GL_OES_compressed_ETC1_RGB8_texture, GL_OES_compressed_paletted_texture, GL_OES_texture_npot, GL_OES_rgb8_rgba8, GL_OES_depth_texture, GL_OES_depth_texture_cube_map, GL_OES_depth24, GL_OES_depth32, GL_OES_packed_depth_stencil, GL_OES_fbo_render_mipmap, GL_OES_get_program_binary, GL_OES_fragment_precision_high, GL_OES_standard_derivatives, GL_OES_EGL_image, GL_OES_EGL_sync, GL_EXT_texture_type_2_10_10_10_REV, GL_EXT_texture_filter_anisotropic, GL_EXT_texture_format_BGRA8888, GL_EXT_read_format_bgra, GL_EXT_multi_draw_arrays, GL_EXT_frag_depth, GL_EXT_discard_framebuffer, GL_EXT_blend_minmax, GL_EXT_multisampled_render_to_texture, GL_EXT_robustness, GL_VIV_tex_direct