Bug 81563

Summary: Black screen and only mouse pointer visible with GNOME Shell
Product: DRI Reporter: Paul Menzel <paulepanter>
Component: DRM/RadeonAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: paulepanter
Version: XOrg git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Paul Menzel 2014-07-20 14:54:58 UTC
With Debian Sid/unstable and `xserver-xorg-video-radeon` 7.4.0-2 and `gnome-shell` 3.12.2-3, the screensaver was on and the monitor in power saving mode. Entering the password there was just a black screen and the mouse pointer, which could be moved. (No idea if the password input dialog was ever shown.)

This is not reproducible, so no idea how to debug this. I attached to the process `gnome-shell` and got the following backtrace. No idea if the process `gnome-shell` is responsible for this though.


Thread 8 (Thread 0x7f6c0fa1c700 (LWP 6276)):
#0  0x00007f6c22fce50d in poll () at ../sysdeps/unix/syscall-template.S:81
No locals.
#1  0x00007f6c234fffe4 in g_main_context_poll (priority=2147483647, n_fds=3, fds=0x7f6c080a5260, timeout=-1, context=0x127e940)
    at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:4028
        poll_func = 0x7f6c2350eb40 <g_poll>
#2  g_main_context_iterate (context=0x127e940, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3729
        max_priority = 2147483647
        timeout = -1
        some_ready = <optimized out>
        nfds = 3
        allocated_nfds = 4
        fds = 0x7f6c080a5260
#3  0x00007f6c2350030a in g_main_loop_run (loop=0x127e8d0) at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3928
        __FUNCTION__ = "g_main_loop_run"
#4  0x00007f6c23cf3e16 in gdbus_shared_thread_func (user_data=0x127e910) at /tmp/buildd/glib2.0-2.40.0/./gio/gdbusprivate.c:273
        data = 0x127e910
#5  0x00007f6c23524f15 in g_thread_proxy (data=0x11f98f0) at /tmp/buildd/glib2.0-2.40.0/./glib/gthread.c:764
        thread = 0x11f98f0
#6  0x00007f6c232a20a4 in start_thread (arg=0x7f6c0fa1c700) at pthread_create.c:309
        __res = <optimized out>
        pd = 0x7f6c0fa1c700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140102095456000, 4260530968099661049, 0, 140102473592928, 140102425792192, 140102095456000, 
                -4181472317389298439, -4181535062816480007}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, 
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#7  0x00007f6c22fd704d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.

Thread 7 (Thread 0x7f6c07fff700 (LWP 6282)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1  0x00007f6c0e5a298b in cnd_wait (mtx=0x13280f0, cond=0x1328118) at ../../../../../../../include/c11/threads_posix.h:154
No locals.
#2  pipe_semaphore_wait (sema=0x13280f0) at ../../../../../../../src/gallium/auxiliary/os/os_thread.h:248
No locals.
#3  radeon_drm_cs_emit_ioctl (param=param@entry=0x1327e00) at ../../../../../../../src/gallium/winsys/radeon/drm/radeon_drm_winsys.c:548
        ws = 0x1327e00
        cs = <optimized out>
        i = <optimized out>
#4  0x00007f6c0e5a21c7 in impl_thrd_routine (p=<optimized out>) at ../../../../../../../include/c11/threads_posix.h:87
        pack = {func = 0x7f6c0e5a2850 <radeon_drm_cs_emit_ioctl>, arg = 0x1327e00}
#5  0x00007f6c232a20a4 in start_thread (arg=0x7f6c07fff700) at pthread_create.c:309
        __res = <optimized out>
        pd = 0x7f6c07fff700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140101967410944, 4260530968099661049, 0, 140102473592928, 140734156681404, 140101967410944, 
                -4181454092232448775, -4181535062816480007}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, 
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#6  0x00007f6c22fd704d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.

Thread 6 (Thread 0x7f6c077fe700 (LWP 6283)):
#0  0x00007f6c22fce50d in poll () at ../sysdeps/unix/syscall-template.S:81
No locals.
#1  0x00007f6c234fffe4 in g_main_context_poll (priority=2147483647, n_fds=1, fds=0x7f6c000010c0, timeout=-1, context=0x153aac0)
    at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:4028
        poll_func = 0x7f6c2350eb40 <g_poll>
#2  g_main_context_iterate (context=context@entry=0x153aac0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3729
        max_priority = 2147483647
        timeout = -1
        some_ready = <optimized out>
        nfds = 1
        allocated_nfds = 1
        fds = 0x7f6c000010c0
#3  0x00007f6c235000ec in g_main_context_iteration (context=0x153aac0, may_block=1) at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3795
        retval = <optimized out>
#4  0x00007f6c0c2881ad in ?? () from /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so
No symbol table info available.
#5  0x00007f6c23524f15 in g_thread_proxy (data=0x12bcca0) at /tmp/buildd/glib2.0-2.40.0/./glib/gthread.c:764
        thread = 0x12bcca0
#6  0x00007f6c232a20a4 in start_thread (arg=0x7f6c077fe700) at pthread_create.c:309
        __res = <optimized out>
        pd = 0x7f6c077fe700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140101959018240, 4260530968099661049, 0, 140102473592928, 140102425792192, 140101959018240, 
                -4181455192280947463, -4181535062816480007}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, 
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#7  0x00007f6c22fd704d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.

Thread 5 (Thread 0x7f6c06ffd700 (LWP 6284)):
#0  0x00007f6c22fce50d in poll () at ../sysdeps/unix/syscall-template.S:81
No locals.
#1  0x00007f6c1efa38c1 in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#2  0x00007f6c1ef9516c in pa_mainloop_poll () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#3  0x00007f6c1ef957de in pa_mainloop_iterate () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#4  0x00007f6c1ef95890 in pa_mainloop_run () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#5  0x00007f6c1efa3873 in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#6  0x00007f6c15868178 in ?? () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-5.0.so
No symbol table info available.
#7  0x00007f6c232a20a4 in start_thread (arg=0x7f6c06ffd700) at pthread_create.c:309
        __res = <optimized out>
        pd = 0x7f6c06ffd700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140101950625536, 4260530968099661049, 0, 140102473592928, 140102428767616, 140101950625536, 
                -4181451894282935047, -4181535062816480007}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, 
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#8  0x00007f6c22fd704d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.

Thread 4 (Thread 0x7f6c067fc700 (LWP 6285)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1  0x00007f6c14de5fd0 in PR_WaitCondVar (cvar=0x154b460, timeout=4294967295) at ptsynch.c:385
        rv = <optimized out>
        thred = 0x154b500
#2  0x00007f6c1e9a5b34 in ?? () from /usr/lib/x86_64-linux-gnu/libmozjs-24.so.0
No symbol table info available.
#3  0x00007f6c14deb468 in _pt_root (arg=0x154b500) at ptthread.c:212
        rv = <optimized out>
        thred = 0x154b500
        detached = 0
        id = 140101942232832
        tid = 6285
#4  0x00007f6c232a20a4 in start_thread (arg=0x7f6c067fc700) at pthread_create.c:309
        __res = <optimized out>
        pd = 0x7f6c067fc700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140101942232832, 4260530968099661049, 0, 140102473592928, 140734156680264, 140101942232832, 
                -4181452990036466439, -4181535062816480007}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, 
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#5  0x00007f6c22fd704d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.

Thread 3 (Thread 0x7f6c05ffb700 (LWP 6286)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
No locals.
#1  0x00007f6c14de5fd0 in PR_WaitCondVar (cvar=0x15a89c0, timeout=4294967295) at ptsynch.c:385
        rv = <optimized out>
        thred = 0x15a8a60
#2  0x00007f6c1ea18f2e in ?? () from /usr/lib/x86_64-linux-gnu/libmozjs-24.so.0
No symbol table info available.
#3  0x00007f6c14deb468 in _pt_root (arg=0x15a8a60) at ptthread.c:212
        rv = <optimized out>
        thred = 0x15a8a60
        detached = 0
        id = 140101933840128
        tid = 6286
#4  0x00007f6c232a20a4 in start_thread (arg=0x7f6c05ffb700) at pthread_create.c:309
        __res = <optimized out>
        pd = 0x7f6c05ffb700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140101933840128, 4260530968099661049, 0, 140102473592928, 140734156680280, 140101933840128, 
                -4181458488131476231, -4181535062816480007}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, 
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#5  0x00007f6c22fd704d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.

Thread 2 (Thread 0x7f6bfbffe700 (LWP 6294)):
#0  0x00007f6c22fce50d in poll () at ../sysdeps/unix/syscall-template.S:81
No locals.
#1  0x00007f6c234fffe4 in g_main_context_poll (priority=2147483647, n_fds=2, fds=0x7f6be80008c0, timeout=3996, context=0x194caa0)
    at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:4028
        poll_func = 0x7f6c2350eb40 <g_poll>
#2  g_main_context_iterate (context=context@entry=0x194caa0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3729
        max_priority = 2147483647
        timeout = 3996
        some_ready = <optimized out>
        nfds = 2
        allocated_nfds = 2
        fds = 0x7f6be80008c0
#3  0x00007f6c235000ec in g_main_context_iteration (context=0x194caa0, may_block=may_block@entry=1) at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3795
        retval = <optimized out>
#4  0x00007f6c23500129 in glib_worker_main (data=<optimized out>) at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:5541
No locals.
#5  0x00007f6c23524f15 in g_thread_proxy (data=0x194b2d0) at /tmp/buildd/glib2.0-2.40.0/./glib/gthread.c:764
        thread = 0x194b2d0
#6  0x00007f6c232a20a4 in start_thread (arg=0x7f6bfbffe700) at pthread_create.c:309
        __res = <optimized out>
        pd = 0x7f6bfbffe700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140101766080256, 4260530968099661049, 0, 140102473592928, 140102425792192, 140101766080256, 
                -4181726771653008135, -4181535062816480007}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, 
              canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#7  0x00007f6c22fd704d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
No locals.

Thread 1 (Thread 0x7f6c2624da80 (LWP 6272)):
#0  0x00007f6c22fce50d in poll () at ../sysdeps/unix/syscall-template.S:81
No locals.
#1  0x00007f6c18c1a232 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
No symbol table info available.
#2  0x00007f6c18c1babf in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
No symbol table info available.
#3  0x00007f6c18c1bbd2 in xcb_wait_for_reply () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
No symbol table info available.
#4  0x00007f6c15acf674 in dri2WaitForMSC (pdraw=0x16d36a0, target_msc=0, divisor=2, remainder=<optimized out>, ust=0x7fff396ab220, msc=0x7fff396ab228, 
    sbc=0x7fff396ab230) at ../../../../src/glx/dri2_glx.c:478
        c = 0x122e1e0
        wait_msc_cookie = <optimized out>
        wait_msc_reply = <optimized out>
        target_msc_hi = 0
        target_msc_lo = 0
        divisor_hi = 0
        divisor_lo = 2
#5  0x00007f6c20a206ce in _cogl_winsys_wait_for_vblank (onscreen=0xc0001b) at ./winsys/cogl-winsys-glx.c:1620
        drawable = 12582939
        msc = 4155037265
        ust = 8908187724
        sbc = 2264
        info = 0x1daeed0
        ctx = 0x13fb400
        glx_renderer = 0x1248360
        xlib_renderer = 0x1291da0
#6  0x00007f6c20a20e2f in _cogl_winsys_onscreen_swap_region (onscreen=0x16c7ab0, user_rectangles=<optimized out>, n_rectangles=<optimized out>)
    at ./winsys/cogl-winsys-glx.c:1822
        framebuffer = 0x16c7ab0
        context = 0x13fb400
        xlib_renderer = 0x1291da0
        glx_renderer = 0x1248360
        xlib_onscreen = 0x13498c0
        glx_onscreen = 0x13498c0
        drawable = 12582939
        end_frame_vsync_counter = <optimized out>
        have_counter = 0
        can_wait = 1
        x_min = <optimized out>
        x_max = <optimized out>
        y_min = <optimized out>
        y_max = <optimized out>
        blit_sub_buffer_is_synchronized = <optimized out>
        framebuffer_width = 1280
        framebuffer_height = <optimized out>
        rectangles = 0x7fff396ab280
        i = <optimized out>
#7  0x00007f6c20a11831 in cogl_onscreen_swap_region (onscreen=0x16c7ab0, rectangles=rectangles@entry=0x7fff396ab3b0, n_rectangles=n_rectangles@entry=1)
    at ./cogl-onscreen.c:370
        framebuffer = 0x16c7ab0
        winsys = <optimized out>
        info = <optimized out>
        __FUNCTION__ = "cogl_onscreen_swap_region"
#8  0x00007f6c241d8f5a in clutter_stage_cogl_redraw (stage_window=0x1283430) at ./cogl/clutter-stage-cogl.c:644
        clip = 0x1283490
        copy_area = {510, 442, 262, 73}
        stage_cogl = 0x1283430
        geom = {x = 0, y = 0, width = 1280, height = 1024}
        have_clip = <optimized out>
        may_use_clipped_redraw = <optimized out>
        use_clipped_redraw = <optimized out>
        can_blit_sub_buffer = <optimized out>
        has_buffer_age = <optimized out>
        wrapper = 0x16dea80
        clip_region = <optimized out>
        force_swap = <optimized out>
        window_scale = 1
#9  0x00007f6c242437d7 in clutter_stage_do_redraw (stage=0x16dea80) at ./clutter-stage.c:1202
        backend = <optimized out>
        actor = 0x16dea80
        priv = 0x16de490
#10 _clutter_stage_do_update (stage=0x16dea80) at ./clutter-stage.c:1260
        priv = 0x16de490
#11 0x00007f6c24229c38 in master_clock_update_stages (master_clock=0x15b9500, stages=0x4fd85c0) at ./clutter-master-clock.c:458
        stages_updated = 0
        l = 0x4fd85c0
#12 clutter_clock_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at ./clutter-master-clock.c:590
        clock_source = <optimized out>
        master_clock = 0x15b9500
        stages_updated = 0
#13 0x00007f6c234ffe04 in g_main_dispatch (context=0x11f8000) at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3064
        dispatch = 0x7f6c24229af0 <clutter_clock_dispatch>
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x0
        callback = 0x0
        cb_funcs = <optimized out>
        cb_data = 0x0
        need_destroy = <optimized out>
        source = 0x15d02b0
        current = 0x1253980
        i = 0
#14 g_main_context_dispatch (context=context@entry=0x11f8000) at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3663
No locals.
#15 0x00007f6c23500048 in g_main_context_iterate (context=0x11f8000, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3734
        max_priority = 150
        timeout = 0
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = 11
        fds = 0x26795a0
#16 0x00007f6c2350030a in g_main_loop_run (loop=0x11fddf0) at /tmp/buildd/glib2.0-2.40.0/./glib/gmain.c:3928
        __FUNCTION__ = "g_main_loop_run"
#17 0x00007f6c24c7d71d in meta_run () from /usr/lib/libmutter.so.0
No symbol table info available.
#18 0x0000000000401d03 in ?? ()
No symbol table info available.
#19 0x00007f6c22f12b45 in __libc_start_main (main=0x401a00, argc=1, argv=0x7fff396ab798, init=<optimized out>, fini=<optimized out>, 
    rtld_fini=<optimized out>, stack_end=0x7fff396ab788) at libc-start.c:287
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, 4260530968099661049, 4201933, 140734156683152, 0, 0, -4260967635046259463, -4181531000098282247}, 
              mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x402230, 0x7fff396ab798}, data = {prev = 0x0, cleanup = 0x0, canceltype = 4203056}}}
        not_first_call = <optimized out>
#20 0x0000000000401df6 in ?? ()
No symbol table info available.
Comment 1 Michel Dänzer 2014-07-22 06:38:00 UTC
That sounds more or less like the problem I fixed with http://cgit.freedesktop.org/xorg/driver/xf86-video-ati/commit/?id=c4ae0e2cbcc0e2ebf9f13ee92d59b5120254a1dc . Can you try that?
Comment 2 Paul Menzel 2014-07-22 10:00:54 UTC
(In reply to comment #1)
> That sounds more or less like the problem I fixed with
> http://cgit.freedesktop.org/xorg/driver/xf86-video-ati/commit/
> ?id=c4ae0e2cbcc0e2ebf9f13ee92d59b5120254a1dc .

Just checking after reading the commit message, the working mouse pointer does not contradict that this is a DPMS problem, right?

> Can you try that?

Sure. Though I have no idea how to reproduce the bug.
Comment 3 Michel Dänzer 2014-07-23 03:37:46 UTC
(In reply to comment #2)
> Just checking after reading the commit message, the working mouse pointer
> does not contradict that this is a DPMS problem, right?

Right, DPMS just triggers the gnome-shell hang, but the X server is still running fine, so the mouse pointer moves normally.
Comment 4 Paul Menzel 2014-07-23 07:25:53 UTC
(In reply to comment #3)
> (In reply to comment #2)
> > Just checking after reading the commit message, the working mouse pointer
> > does not contradict that this is a DPMS problem, right?
> 
> Right, DPMS just triggers the gnome-shell hang, but the X server is still
> running fine, so the mouse pointer moves normally.

Thank you for the explanation!

I built the package with the patch attached and keep my ears open for problem reports from the users.

As this looks like a severe bug, should a point release (7.4.1) be made?
Comment 5 Paul Menzel 2017-08-05 13:10:10 UTC
As commented by Michael, the reported bug was already fixed in the git repository.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.