Page MenuHomePhabricator

Enlightenment 0.21.9 (pre release) issues changing virtual desktops
Closed, ResolvedPublic

Description

When running the e 0.21.9 pre release (current 0.21 branch) with efl 1.19 and software rendering enabled. Frequently when changing virtual desktops some gtk (and possibly Qt) applications aren't being redrawn correctly, leaving them with black areas etc

After changing virtual desktops several times e is crashing with the following state. Hopefully this isn't too hard to track and fix, i'm going to hold the release for now.

Thread 4 (Thread 0x7fd51d820700 (LWP 28502)):
#0  0x00007fd52fa060ca in do_futex_wait.constprop () from /lib64/libpthread.so.0
No symbol table info available.
#1  0x00007fd52fa06171 in __new_sem_wait_slow.constprop.0 () from /lib64/libpthread.so.0
No symbol table info available.
#2  0x00007fd531998354 in eina_semaphore_lock (sem=0xfa0628) at ../src/lib/eina/eina_inline_lock_posix.x:702
No locals.
#3  _eina_thread_queue_wait (thq=0xfa0600) at lib/eina/eina_thread_queue.c:204
No locals.
#4  0x00007fd531998c99 in eina_thread_queue_wait (thq=0xfa0600, allocref=allocref@entry=0x7fd51d807298) at lib/eina/eina_thread_queue.c:477
        msg = <optimized out>
        blk = 0x7ffd5168f390
#5  0x00007fd5314352bf in _evas_common_scale_sample_thread (data=<optimized out>, t=<optimized out>) at lib/evas/common/evas_scale_sample.c:827
        ref = 0x238a280
        msg = <optimized out>
        todo = 0x0
#6  0x00007fd531997ff0 in _eina_internal_call (context=0xfa02d0) at lib/eina/eina_thread.c:151
        __cancel_buf = {__cancel_jmp_buf = {{__cancel_jmp_buf = {0, 557556910395973934, 0, 140725969283087, 16384720, 140553299822336, -570008754859843282, -570070130117877458}, __mask_was_saved = 0}}, __pad = {0x7fd51d807370, 0x0, 0x0, 0x0}}
        __cancel_arg = <optimized out>
        __not_first_call = <optimized out>
        c = <optimized out>
        r = <optimized out>
#7  0x00007fd52f9ff744 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#8  0x00007fd52e9aaaad in clone () from /lib64/libc.so.6
No symbol table info available.

Thread 3 (Thread 0x7fd51f1e4700 (LWP 28501)):
#0  0x00007fd52e9ab083 in epoll_wait () from /lib64/libc.so.6
No symbol table info available.
#1  0x00007fd531085ab2 in _timer_tick_core (data=<optimized out>, thread=0x10dda10) at lib/ecore/ecore_anim.c:238
        pollfd = 28
        timerfd = 29
        pollev = {events = 1, data = {ptr = 0x22, fd = 34, u32 = 34, u64 = 34}}
        pollincoming = {{events = 1, data = {ptr = 0x22, fd = 34, u32 = 34, u64 = 34}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}}
        timerfdbuf = 1
        i = <optimized out>
        t_ft = <optimized out>
        pframetime = 0.016666666666666666
        tspec_new = {it_interval = {tv_sec = 0, tv_nsec = 16666666}, it_value = {tv_sec = 0, tv_nsec = 12070956}}
        tspec_old = {it_interval = {tv_sec = 0, tv_nsec = 0}, it_value = {tv_sec = 0, tv_nsec = 0}}
        rfds = {fds_bits = {0 <repeats 16 times>}}
        wfds = {fds_bits = {0 <repeats 16 times>}}
        exfds = {fds_bits = {0, 0, 0, 0, 0, 0, 0, 140553603812415, 0, 0, 0, 0, 140553326735856, 140553326839552, 0, 140553636905374}}
        tv = {tv_sec = 0, tv_usec = 0}
        data_control = 0 '\000'
        data_timeout = 0 '\000'
        t = <optimized out>
        tick = 1 '\001'
        t0 = 40694.666706880998
        d = 4.0214332288346366e-05
        ft = <optimized out>
        ret = <optimized out>
        __FUNCTION__ = "_timer_tick_core"
#2  0x00007fd5310a26fc in _ecore_direct_worker (work=0x10dda10) at lib/ecore/ecore_thread.c:475
        __cancel_buf = {__cancel_jmp_buf = {{__cancel_jmp_buf = {17685008, 557556910395973934, 0, 140725969287839, 15463632, 140553326839552, -570011879471619794, -570069179010817746}, __mask_was_saved = 0}}, __pad = {0x7fd51f1cb2d0, 0x0, 0x0, 0x0}}
        __cancel_routine = 0x7fd5310a2660 <_ecore_direct_worker_cleanup>
        __cancel_arg = 0x10dda10
        __not_first_call = <optimized out>
#3  0x00007fd531997ff0 in _eina_internal_call (context=0xebf4d0) at lib/eina/eina_thread.c:151
        __cancel_buf = {__cancel_jmp_buf = {{__cancel_jmp_buf = {0, 557556910395973934, 0, 140725969287839, 15463632, 140553326839552, -570011879448551122, -570070130117877458}, __mask_was_saved = 0}}, __pad = {0x7fd51f1cb370, 0x0, 0x0, 0x0}}
        __cancel_arg = <optimized out>
        __not_first_call = <optimized out>
        c = <optimized out>
        r = <optimized out>
#4  0x00007fd52f9ff744 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#5  0x00007fd52e9aaaad in clone () from /lib64/libc.so.6
No symbol table info available.

Thread 2 (Thread 0x7fd51ffff700 (LWP 28499)):
#0  0x00007fd52fa040bf in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
No symbol table info available.
#1  0x00007fd53143f609 in eina_condition_wait (cond=0x7fd5317234e0 <evas_thread_queue_condition>) at ../src/lib/eina/eina_inline_lock_posix.x:351
        r = 0 '\000'
        ok = <optimized out>
#2  evas_thread_worker_func (data=<optimized out>, thread=<optimized out>) at lib/evas/common/evas_thread_render.c:93
        cmd = <optimized out>
        len = <optimized out>
        max = <optimized out>
        __FUNCTION__ = "evas_thread_worker_func"
        __PRETTY_FUNCTION__ = "evas_thread_worker_func"
#3  0x00007fd531997ff0 in _eina_internal_call (context=0xe46380) at lib/eina/eina_thread.c:151
        __cancel_buf = {__cancel_jmp_buf = {{__cancel_jmp_buf = {0, 557556910395973934, 0, 140725969288095, 14967680, 140553341630208, -570012174190681810, -570070130117877458}, __mask_was_saved = 0}}, __pad = {0x7fd51ffe6370, 0x0, 0x0, 0x0}}
        __cancel_arg = <optimized out>
        __not_first_call = <optimized out>
        c = <optimized out>
        r = <optimized out>
#4  0x00007fd52f9ff744 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#5  0x00007fd52e9aaaad in clone () from /lib64/libc.so.6
No symbol table info available.

Thread 1 (Thread 0x7fd53270b300 (LWP 28497)):
#0  0x00007fd52fa0749d in pause () from /lib64/libpthread.so.0
No symbol table info available.
#1  <signal handler called>
No symbol table info available.
#2  0x00007fd52eeb4490 in ecore_x_image_to_argb_convert (src=src@entry=0x7fd50580f000, sbpp=32, sbpl=6720, c=<optimized out>, v=v@entry=0x10b2450, x=<optimized out>, y=0, w=1680, h=989, dst=dst@entry=0x0, dbpl=dbpl@entry=0, dx=0, dy=0) at lib/ecore_x/ecore_x_image.c:699
        dp = 0x0
        s8 = <optimized out>
        s16 = <optimized out>
        s32 = 0x7fd50580f004
        de = 0x1a40
        vis = 0x10b2450
        cols = <optimized out>
        n = <optimized out>
        nret = 0
        i = <optimized out>
        row = 0
        pal = {16, 0, 32, 0, 15120928, 0, 40482528, 0, 0, 0, 781435936, 32725, 15120928, 0, 0, 0, 1, 0, 654091932, 32725, 0, 0, 32, 0, 15125224, 0, 0, 1, 15125168, 0, 15120992, 0, 15121044, 0, 4096, 0, 0, 0, 0, 0, 1365832192, 32765, 1, 0, 1365832272, 32765, 0, 0, 0, 0, 1, 0, 44176320, 0, 825888411, 32725, 44176320, 0, 23969200, 0, 0, 0, 3840131072, 3978195391, 24419216, 0, 1, 0, 15120928, 0, 15120952, 0, 0, 0, 3840131072, 3978195391, 1365832384, 32765, 1, 0, 15120928, 0, 15120952, 0, 0, 0, 0, 0, 1365832432, 32765, 654083655, 32725, 16, 65537, 0, 1073741937, 53, 536870912, 799043833, 32725, 0, 0, 654093065, 32725, 16375528, 0, 0, 4294967295, 1020, 32725, 799043833, 32725, 0, 0, 654093065, 32725, 15121044, 0, 4294967295, 4294967295, 0, 0, 44917744, 1, 26388, 0, 15120928, 0, 15121044, 0, 4096, 0, 0, 0, 0, 0, 1365832576, 32765, 1, 0, 1365832656, 32765, 80, 0, 0, 0, 654089265, 32725, 1365832680, 32765, 654089586, 32725, 15120928, 0, 40482528, 0, 26388, 0, 1365832720, 32765, 0, 0, 654084827, 32725, 1, 0, 4294967295, 4294967295, 0, 0, 3840131072, 3978195391, 0, 0, 0, 0, 0, 0, 15120952, 0, 0, 0, 15120928, 0, 1365832920, 32765, 654093324, 32725, 26388, 0, 17618592, 0, 41614048, 0, 41614048, 0, 40482528, 0, 15120928, 0...}
        r = <optimized out>
        g = <optimized out>
        b = <optimized out>
        mode = 6
#3  0x00000000004fd143 in e_pixmap_image_data_argb_convert (cp=<optimized out>, pix=pix@entry=0x0, ipix=ipix@entry=0x7fd50580f000, r=<optimized out>, stride=stride@entry=0) at src/bin/e_pixmap.c:958
        __FUNCTION__ = "e_pixmap_image_data_argb_convert"
#4  0x0000000000473e86 in e_comp_object_render (obj=0x4000000333986be0) at src/bin/e_comp_object.c:4058
        it = 0x2aeaf90
        r = 0x2aeafd8
        l = <optimized out>
        o = <optimized out>
        stride = 0
        pw = 1680
        ph = 989
        pix = 0x0
        srcpix = 0x7fd50580f000
        ret = 1 '\001'
        cw = 0x11626b0
        __FUNCTION__ = "e_comp_object_render"
#5  0x000000000047431d in _e_comp_object_pixels_get (data=0x11626b0, obj=<optimized out>) at src/bin/e_comp_object.c:1017
        cw = 0x11626b0
        ec = 0x1161a30
        pw = 1680
        ph = 989
        bx = 0
        by = 0
        bxx = 0
        byy = 0
#6  0x00007fd5313417c5 in evas_process_dirty_pixels (pixels=<optimized out>, surface=<optimized out>, output=<optimized out>, o=0x1166470, obj=<optimized out>, eo_obj=0x4000000353986be8) at lib/evas/canvas/evas_object_image.c:1660
        x = -292
        y = 21
        w = 1680
        h = 989
        direct_override = 0 '\000'
        direct_force_off = 0 '\000'
#7  _evas_image_render (eo_obj=0x4000000353986be8, obj=obj@entry=0x1166340, output=output@entry=0xfa1290, context=context@entry=0x19cf510, surface=surface@entry=0x2a6f040, x=x@entry=-1280, y=0, l=l@entry=0, t=t@entry=0, r=r@entry=0, b=b@entry=0, do_async=do_async@entry=1 '\001') at lib/evas/canvas/evas_object_image.c:1936
        o = 0x1166470
        oi = <optimized out>
        imagew = <optimized out>
        imageh = <optimized out>
        uvw = <optimized out>
        uvh = <optimized out>
        cw = 129
        ch = 56
        pixels = <optimized out>
        source = <optimized out>
#8  0x00007fd531341fb1 in evas_object_image_render (eo_obj=<optimized out>, obj=0x1166340, type_private_data=0x1166470, output=0xfa1290, context=0x19cf510, surface=0x2a6f040, x=-1280, y=0, do_async=1 '\001') at lib/evas/canvas/evas_object_image.c:1898
        do_async = 1 '\001'
        y = 0
        surface = 0x2a6f040
        context = 0x19cf510
        type_private_data = 0x1166470
        eo_obj = <optimized out>
        x = -1280
        output = 0xfa1290
        o = 0x1166470
#9  0x00007fd5313a3938 in evas_render_mapped (evas=evas@entry=0xf9dd80, eo_obj=eo_obj@entry=0x4000000353986be8, obj=obj@entry=0x1166340, context=context@entry=0xf7ba20, surface=surface@entry=0x2a6f040, off_x=off_x@entry=-1280, off_y=off_y@entry=0, mapped=mapped@entry=0, ecx=ecx@entry=0, ecy=ecy@entry=0, ecw=ecw@entry=136, ech=ech@entry=56, proxy_render_data=proxy_render_data@entry=0x0, level=level@entry=3, do_async=do_async@entry=1 '\001') at lib/evas/canvas/evas_render.c:2256
        obj2 = <optimized out>
        clean_them = 0 '\000'
        proxy_src_clip = <optimized out>
        ctx = 0x19cf510
#10 0x00007fd5313a4d56 in evas_render_updates_internal_loop (eo_e=eo_e@entry=0x400000011b986b5a, evas=evas@entry=0xf9dd80, surface=surface@entry=0x2a6f040, context=context@entry=0xf7ba20, top=top@entry=0x0, ux=1280, uy=0, uw=136, uh=56, cx=0, cy=0, cw=136, ch=56, fx=fx@entry=0, fy=fy@entry=0, alpha=alpha@entry=0 '\000', do_async=do_async@entry=1 '\001', offset=offset@entry=0x7ffd5168fc30, level=level@entry=0) at lib/evas/canvas/evas_render.c:2900
        mask = 0x0
        x = <optimized out>
        y = <optimized out>
        w = <optimized out>
        h = <optimized out>
        ent = <optimized out>
        eo_obj = <optimized out>
        obj = 0x1166340
        off_x = -1280
        off_y = 0
        i = 113
        j = <optimized out>
        clean_them = 0 '\000'
#11 0x00007fd5313a639c in evas_render_updates_internal (eo_e=eo_e@entry=0x400000011b986b5a, make_updates=make_updates@entry=1 '\001', do_draw=do_draw@entry=1 '\001', done_func=done_func@entry=0x7fd53139fb40 <evas_render_pipe_wakeup>, done_data=done_data@entry=0xf9dd80, do_async=do_async@entry=1 '\001') at lib/evas/canvas/evas_render.c:3230
        ctx = 0xf7ba20
        surface = 0x2a6f040
        uy = 0
        cw = 136
        cx = 0
        ch = 56
        j = <optimized out>
        uw = 136
        cy = 0
        fx = 0
        ru = <optimized out>
        ux = 1280
        uh = 56
        offset = 2
        fy = 0
        haveup = 1 '\001'
        eo_obj = <optimized out>
        obj = <optimized out>
        evas = 0xf9dd80
        e = 0xf9dd80
        ll = 0x0
        clean_them = 0 '\000'
        rendering = 0 '\000'
        alpha = <optimized out>
        r = 0x0
        i = <optimized out>
        p1ctx = {e = 0xf9dd80, active_objects = 0xf9dea0, render_objects = 0xf9dee8, snapshot_objects = 0xf9df68, restack_objects = 0xf9dec8, delete_objects = 0xf9de80, redraw_all = 0}
        redraw_all = <optimized out>
        render_mode = EVAS_RENDER_MODE_ASYNC_INIT
        __FUNCTION__ = "evas_render_updates_internal"
        prepare = 1
#12 0x00007fd5313a7fcb in _evas_canvas_render_async (eo_e=0x400000011b986b5a, e=0xf9dd80) at lib/evas/canvas/evas_render.c:3599
        ret = <optimized out>
#13 0x00007fd531330edd in evas_canvas_render_async (obj=0x400000011b986b5a) at ../src/lib/evas/canvas/evas_canvas.eo.c:172
        _r = <optimized out>
        ___cache = {index = {{klass = 0xf9a6a0}}, entry = {{func = 0xf9bc90}}, off = {{off = 144}}, op = 420, generation = 1}
        ___call = {eo_id = 0x400000011b986b5a, obj = 0xf9dcf0, func = 0x7fd5313a7f10 <_evas_canvas_render_async>, data = 0xf9dd80, extn1 = 0x2a127b0, extn2 = 0x0, extn3 = 0x0, extn4 = 0x7fd531e3bcc9 <_elm_win_pre_render+9>}
        _func_ = <optimized out>
#14 0x00007fd531335855 in evas_render_async (obj=<optimized out>) at ../src/lib/evas/canvas/evas_canvas.eo.c:737
No locals.
#15 0x00007fd51e7db3a3 in _ecore_evas_x_render (ee=0xe7c650) at modules/ecore_evas/engines/x/ecore_evas_x.c:818
        ll = 0x0
        rend = <optimized out>
        ee2 = 0x0
        render2 = 0
        ee = 0xe7c650
        edata = <optimized out>
        render2 = 0
#16 0x00007fd530e5b4e7 in _ecore_evas_idle_enter (data=<optimized out>) at lib/ecore_evas/ecore_evas.c:223
        change = 0 '\000'
        ee = 0xe7c650
        t1 = <optimized out>
        t2 = 0
        rend = 0
        now = <optimized out>
        __FUNCTION__ = "_ecore_evas_idle_enter"
#17 0x00007fd53108bb9f in _ecore_call_task_cb (data=<optimized out>, func=<optimized out>) at lib/ecore/ecore_private.h:283
No locals.
#18 _ecore_factorized_idle_process (data=0xd9c0d0, event=<optimized out>) at lib/ecore/ecore_idler.c:35
        idler = 0xd9c0d0
#19 0x00007fd52e6b90e6 in _event_callback_call (legacy_compare=0 '\000', event_info=<optimized out>, desc=<optimized out>, pd=0xd95a10, obj_id=<optimized out>) at lib/eo/eo_base_class.c:1422
        it = 0x7fd5312bca30 <internal+16>
        ev = {object = 0x4000000007986b15, desc = 0x7fd5312b9f30 <_EFL_LOOP_EVENT_IDLE_ENTER>, info = 0x0}
        ret = 1 '\001'
        frame = {next = 0x0, idx = 2, inserted_before = 0, generation = 1}
        cb = 0xd95a78
        lookup = 0x7ffd5168fe50
        saved = {__in_list = {next = 0x0, prev = 0x0, last = 0x7ffd5168fe50}, desc = 0x7fd5312b9f30 <_EFL_LOOP_EVENT_IDLE_ENTER>, current = 1}
        idx = 2
        callback_already_stopped = 0 '\000'
#20 _efl_object_event_callback_call (obj_id=<optimized out>, pd=0xd95a10, desc=0x7fd5312b9f30 <_EFL_LOOP_EVENT_IDLE_ENTER>, event_info=<optimized out>) at lib/eo/eo_base_class.c:1506
No locals.
#21 0x00007fd52e6b604b in efl_event_callback_call (obj=0x4000000007986b15, desc=0x7fd5312b9f30 <_EFL_LOOP_EVENT_IDLE_ENTER>, event_info=event_info@entry=0x0) at lib/eo/efl_object.eo.c:142
        _r = <optimized out>
        ___cache = {index = {{klass = 0xd94de0}}, entry = {{func = 0xd94f30}}, off = {{off = 80}}, op = 32, generation = 1}
        ___call = {eo_id = 0x4000000007986b15, obj = 0xd959c0, func = 0x7fd52e6b8fa0 <_efl_object_event_callback_call>, data = 0xd95a10, extn1 = 0x0, extn2 = 0x40e3ded3bbbbbbbc, extn3 = 0x0, extn4 = 0x0}
        _func_ = <optimized out>
#22 0x00007fd53108ba5e in _ecore_idle_enterer_call (loop=<optimized out>) at lib/ecore/ecore_idle_enterer.c:48
No locals.
#23 0x00007fd53108e902 in _ecore_main_loop_iterate_internal (once_only=once_only@entry=0) at lib/ecore/ecore_main.c:2293
        next_time = -1
        f = <optimized out>
        p = <optimized out>
#24 0x00007fd53108efa7 in ecore_main_loop_begin () at lib/ecore/ecore_main.c:1289
        __FUNCTION__ = "ecore_main_loop_begin"
#25 0x0000000000440fdf in main (argc=<optimized out>, argv=<optimized out>) at src/bin/e_main.c:1079
        safe_mode = <optimized out>
        after_restart = 1 '\001'
        waslocked = <optimized out>
        t = <optimized out>
        tstart = <optimized out>
        s = <optimized out>
        buff = "1501634695.0\000_\255\026\201\266\270\061ij\230\032\002e\261=\304ص\032"
        action = {__sigaction_handler = {sa_handler = 0x50e960 <e_sigabrt_act>, sa_sigaction = 0x50e960 <e_sigabrt_act>}, sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = -1073741820, sa_restorer = 0x1b333a8b8351ebf9}
        __FUNCTION__ = "main"
simotek created this task.Aug 1 2017, 5:51 PM
simotek updated the task description. (Show Details)Aug 1 2017, 5:51 PM

Ok seen as I seem to be able to replicate it pretty easily i'll try again with each of those removed 1 by 1 and see what I end up with

@zmike after 5-10 minutes of playing with your WIP branch it seems that the issue is not there.

zmike added a comment.Aug 3 2017, 7:21 AM

After more testing I think this patch series makes rendering objectively worse, so I'm going to revert anyway.