Mir

segfault in mir::compositor::GLProgramFamily::Shader::init()

Bug #1416482 reported by Alan Griffiths on 2015-01-30
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
High
Alan Griffiths
mir (Ubuntu)
Undecided
Unassigned

Bug Description

This is intermittent (so I'm not sure if there are other ways to reproduce) but Initial experiments suggest this comes of running mir_demo_server with the option "--display-config sidebyside" (and two monitors).

Here's some gdb of a core:

(gdb) info threads
  Id Target Id Frame
  8 Thread 0x7f3e8effd700 (LWP 4942) 0x00007f3e9cbb8e1d in close () at ../sysdeps/unix/syscall-template.S:81
  7 Thread 0x7f3e8f7fe700 (LWP 4941) 0x00007f3e9c3b1283 in select () at ../sysdeps/unix/syscall-template.S:81
  6 Thread 0x7f3e8e7fc700 (LWP 4943) 0x00007f3e9c3b9ee3 in epoll_wait () at ../sysdeps/unix/syscall-template.S:81
  5 Thread 0x7f3e95b6a700 (LWP 4937) pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
  4 Thread 0x7f3e95369700 (LWP 4938) 0x00007f3e9c3b9ee3 in epoll_wait () at ../sysdeps/unix/syscall-template.S:81
  3 Thread 0x7f3e94b68700 (LWP 4939) pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
  2 Thread 0x7f3e9dd22780 (LWP 4935) 0x00007f3e9c3af45d in poll () at ../sysdeps/unix/syscall-template.S:81
* 1 Thread 0x7f3e8ffff700 (LWP 4940) 0x00007f3e9683bc2b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
(gdb) bt
#0 0x00007f3e9683bc2b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#1 0x00007f3e9683bc89 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#2 0x00007f3e9683c1f5 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#3 0x00007f3e96816ec7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#4 0x00007f3e9686169f in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#5 0x00007f3e966fbfcf in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#6 0x00007f3e9d60d542 in mir::compositor::GLProgramFamily::Shader::init (this=0x7f3e80002550, type=35632,
    src=0x7f3e9d7a09a8 "precision mediump float;\nuniform sampler2D tex;\nuniform float alpha;\nvarying vec2 v_texcoord;\nvoid main() {\n vec4 frag = texture2D(tex, v_texcoord);\n gl_FragColor = alpha*frag;\n}\n")
    at /home/alan/display_server/mir3/src/server/compositor/gl_program_family.cpp:31
#7 0x00007f3e9d60d9fa in mir::compositor::GLProgramFamily::add_program (this=0x7f3e800009f0,
    vshader_src=0x7f3e9d7a0808 "attribute vec3 position;\nattribute vec2 texcoord;\nuniform mat4 screen_to_gl_coords;\nuniform mat4 display_transform;\nuniform mat4 transform;\nuniform vec2 centre;\nvarying vec2 v_texcoord;\nvoid main() {\n"...,
    fshader_src=0x7f3e9d7a09a8 "precision mediump float;\nuniform sampler2D tex;\nuniform float alpha;\nvarying vec2 v_texcoord;\nvoid main() {\n vec4 frag = texture2D(tex, v_texcoord);\n gl_FragColor = alpha*frag;\n}\n")
    at /home/alan/display_server/mir3/src/server/compositor/gl_program_family.cpp:80
#8 0x00007f3e9d6090e5 in mir::compositor::GLRenderer::GLRenderer(std::unique_ptr<mir::graphics::GLTextureCache, std::default_delete<mir::graphics::GLTextureCache> >&&, mir::geometry::Rectangle const&, mir::compositor::DestinationAlpha) (
    this=0x7f3e800009d0, texture_cache=<unknown type in bin/../lib/libmirserver.so.29, CU 0x4bf826, DIE 0x4d008e>,
    display_area=..., dest_alpha=mir::compositor::DestinationAlpha::opaque)
    at /home/alan/display_server/mir3/src/server/compositor/gl_renderer.cpp:102
#9 0x00007f3e9d60cb45 in mir::compositor::GLRendererFactory::create_renderer_for (this=0x26c7cb0, rect=...,
    dest_alpha=mir::compositor::DestinationAlpha::opaque)
    at /home/alan/display_server/mir3/src/server/compositor/gl_renderer_factory.cpp:35
#10 0x00007f3e9d603764 in mir::compositor::DefaultDisplayBufferCompositorFactory::create_compositor_for (this=0x2585d00,
    display_buffer=...)
    at /home/alan/display_server/mir3/src/server/compositor/default_display_buffer_compositor_factory.cpp:44

Related branches

Changed in mir:
importance: Undecided → High
Changed in mir:
assignee: nobody → Alan Griffiths (alan-griffiths)
Changed in mir:
status: New → In Progress
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.11.0

Changed in mir:
status: In Progress → Fix Committed
Changed in mir:
milestone: none → 0.11.0
Launchpad Janitor (janitor) wrote :
Download full text (3.2 KiB)

This bug was fixed in the package mir - 0.11.0+15.04.20150209.1-0ubuntu1

---------------
mir (0.11.0+15.04.20150209.1-0ubuntu1) vivid; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.11.0 (https://launchpad.net/mir/+milestone/0.11.0)
    - Enhancements:
      . Lots more major plumbing in the Android code, on the path to
        supporting external displays.
      . Add support for clang 3.6.
      . Major redesign of server classes in mir::shell,scene and friends
        (still in progress).
      . Added client API for creating dialogs and tooltips.
      . Added new surface states: mir_surface_state_hidden and
        mir_surface_state_horizmaximized.
      . Performance: Use optimally efficient fragment shading when possible.
      . Performance: (Desktop) Composite using double buffering instead of
        triple to reduce visible lag.
      . mir_proving_server: Can now resize windows from any edge or corner
        using the existing Alt+middlebuttondrag.
      . mir_proving_server: Added some demo custom shaders (negative and
        high contrast modes: Super+N/C).
      . mir_proving_server: Can now close clients politely via Alt+F4.
      . Added MirPointerInputEvent (part of the new input API, the old
        MirMotionEvent is still supported also for now).
    - ABI summary: Servers need rebuilding, but clients do not;
      . Mirclient ABI unchanged at 8
      . Mircommon ABI unchanged at 3
      . Mirplatform ABI bumped to 6
      . Mirserver ABI bumped to 29
    - Bug fixes:
      . [regression] mir_demo_server exits immediately with boost
        bad_any_cast exception (LP: #1414630)
      . need way to position menus and tooltips (relative positioning to
        parent) (LP: #1324101)
      . GLibMainLoopTest failure seen in CI (LP: #1413748)
      . Clang builds fail in CI (LP: #1416317)
      . segfault in mir::compositor::GLProgramFamily::Shader::init()
        (LP: #1416482)
      . GLRenderer: The default fragment shader is sub-optimal for alpha=1.0
        (LP: #1350674)
      . mesa::DisplayBuffer::post_update is triple buffered - more laggy than
        it needs to be (LP: #1350725)
      . Cannot connect to nested server when started from a differen vt
        (LP: #1379266)
      . [testfail] AsioMainLoopAlarmTest fails in CI (LP: #1392256)
      . Compositor report inconsistently reports frame time during bypass,
        and render time otherwise (LP: #1408906)
      . [regression] mir_demo_client_fingerpaint doesn't paint anything any
        more (with the mouse) (LP: #1413139)
      . Hardware cursor is always slightly ahead of the composited image
        (LP: #1274408)
      . integration tests are outputting (too many) DisplayServer log
        messages (LP: #1408231)
      . [regression] deploy-and-test.sh doesn't work any more (unless you
        have umockdev installed already) (LP: #1413479)
      . Color Inverse on display. Toggle Negative Image (LP: #1400580)
      . mir-ubuntu-vivid-armhf-ci fails consistently (LP: #1407863)
      . Double-buffered surfaces may lag or freeze if event driven and not
        constantly redrawing (LP: #1395581)
      . Pointer motion and crossing events...

Read more...

Changed in mir (Ubuntu):
status: New → Fix Released
Changed in mir:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers