Skip to content

Instantly share code, notes, and snippets.

@mbakhoff
Created September 22, 2022 12:20
Show Gist options
  • Save mbakhoff/ba466bc530d5e50528abebc90c6c362d to your computer and use it in GitHub Desktop.
Save mbakhoff/ba466bc530d5e50528abebc90c6c362d to your computer and use it in GitHub Desktop.
wlfreerdp 2.8.0 crashes
Thread 38 "wlfreerdp" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffdb7fe640 (LWP 510165)]
__memcpy_avx_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:413
413 VMOVU %VEC(0), (%rdi)
(gdb) backtrace
#0 __memcpy_avx_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:413
#1 0x0000555555559410 in wlf_copy_image (src=0x7fffe1940030, srcStride=7680, srcWidth=1920, srcHeight=1019, dst=0x7fffd910e000, dstStride=7680, dstWidth=1920, dstHeight=1019, area=0x7fffdb7fd8d0, scale=0)
at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/client/Wayland/wlfreerdp.c:710
#2 0x0000555555557ca7 in wl_update_buffer (context_w=0x5555555783d0, ix=288, iy=976, iw=64, ih=43) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/client/Wayland/wlfreerdp.c:108
#3 0x0000555555557e85 in wl_end_paint (context=0x5555555783d0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/client/Wayland/wlfreerdp.c:151
#4 0x00007ffff7ceef59 in update_end_paint (update=0x55555558f9e0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/core/update.c:3022
#5 0x00007ffff7c54abd in gdi_OutputUpdate (gdi=0x555556229400, surface=0x7fffd52f6270) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/gdi/gfx.c:188
#6 0x00007ffff7c54be2 in gdi_UpdateSurfaces (context=0x555556567290) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/gdi/gfx.c:225
#7 0x00007ffff7c54ccb in gdi_EndFrame (context=0x555556567290, endFrame=0x7fffdb7fda90) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/gdi/gfx.c:258
#8 0x00007ffff7f3adc3 in rdpgfx_recv_end_frame_pdu (callback=0x7fffd4000d90, s=0x7fffd5222740) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/rdpgfx/client/rdpgfx_main.c:873
#9 0x00007ffff7f3e83f in rdpgfx_recv_pdu (callback=0x7fffd4000d90, s=0x7fffd5222740) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/rdpgfx/client/rdpgfx_main.c:1688
#10 0x00007ffff7f3efb6 in rdpgfx_on_data_received (pChannelCallback=0x7fffd4000d90, data=0x5555565c72c0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/rdpgfx/client/rdpgfx_main.c:1808
#11 0x00007ffff7efd511 in dvcman_receive_channel_data (drdynvc=0x5555555d8090, pChannelMgr=0x5555555da880, ChannelId=7, data=0x5555565c72c0)
at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:736
#12 0x00007ffff7efe88c in drdynvc_process_data (drdynvc=0x5555555d8090, Sp=2, cbChId=0, s=0x5555565c72c0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:1169
#13 0x00007ffff7efeb61 in drdynvc_order_recv (drdynvc=0x5555555d8090, s=0x5555565c72c0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:1235
#14 0x00007ffff7eff254 in drdynvc_virtual_channel_client_thread (arg=0x5555555d8090) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:1389
#15 0x00007ffff7b3b300 in thread_launcher (arg=0x55555657f490) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/winpr/libwinpr/thread/thread.c:530
#16 0x00007ffff788c6b3 in start_thread (arg=<optimized out>) at pthread_create.c:442
#17 0x00007ffff791229c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
(gdb) frame 1
#1 0x0000555555559410 in wlf_copy_image (src=0x7fffe1940030, srcStride=7680, srcWidth=1920, srcHeight=1019, dst=0x7fffd910e000, dstStride=7680, dstWidth=1920, dstHeight=1019, area=0x7fffdb7fd8d0, scale=0)
at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/client/Wayland/wlfreerdp.c:710
710 memcpy(&pdst[dstOffset], &psrc[srcOffset], width * 4);
(gdb) list
705
706 for (i = 0; i < height; i++)
707 {
708 const size_t srcOffset = i * srcStride + baseSrcOffset;
709 const size_t dstOffset = i * dstStride + baseDstOffset;
710 memcpy(&pdst[dstOffset], &psrc[srcOffset], width * 4);
711 }
712
713 rc = TRUE;
714 }
(gdb) info locals
srcOffset = 7496832
dstOffset = 7496832
i = 0
baseDstOffset = 7496832
psrc = 0x7fffe1940030 "\377\375\376"
baseSrcOffset = 7496832
width = 64
height = 43
pdst = 0x7fffd910e000 ""
rc = 0
Thread 38 "wlfreerdp" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffdb7fe640 (LWP 797129)]
__memcpy_avx_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:496
496 VMOVA %VEC(1), (%rdi)
(gdb) backtrace
#0 __memcpy_avx_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:496
#1 0x0000555555559410 in wlf_copy_image (src=0x7fffe1940030, srcStride=7680, srcWidth=1920, srcHeight=1019, dst=0x7fffd8997000, dstStride=7680, dstWidth=1920, dstHeight=1019, area=0x7fffdb7fd8d0, scale=0)
at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/client/Wayland/wlfreerdp.c:710
#2 0x0000555555557ca7 in wl_update_buffer (context_w=0x5555555783d0, ix=0, iy=800, iw=1920, ih=219) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/client/Wayland/wlfreerdp.c:108
#3 0x0000555555557e85 in wl_end_paint (context=0x5555555783d0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/client/Wayland/wlfreerdp.c:151
#4 0x00007ffff7ceef59 in update_end_paint (update=0x55555558f9e0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/core/update.c:3022
#5 0x00007ffff7c54abd in gdi_OutputUpdate (gdi=0x555556229400, surface=0x7fffd509cef0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/gdi/gfx.c:188
#6 0x00007ffff7c54be2 in gdi_UpdateSurfaces (context=0x555556567290) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/gdi/gfx.c:225
#7 0x00007ffff7c54ccb in gdi_EndFrame (context=0x555556567290, endFrame=0x7fffdb7fda90) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/gdi/gfx.c:258
#8 0x00007ffff7f3adc3 in rdpgfx_recv_end_frame_pdu (callback=0x7fffd4000d90, s=0x7fffd5a4e980) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/rdpgfx/client/rdpgfx_main.c:873
#9 0x00007ffff7f3e83f in rdpgfx_recv_pdu (callback=0x7fffd4000d90, s=0x7fffd5a4e980) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/rdpgfx/client/rdpgfx_main.c:1688
#10 0x00007ffff7f3efb6 in rdpgfx_on_data_received (pChannelCallback=0x7fffd4000d90, data=0x555556237010) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/rdpgfx/client/rdpgfx_main.c:1808
#11 0x00007ffff7efd511 in dvcman_receive_channel_data (drdynvc=0x5555555d8090, pChannelMgr=0x5555555da880, ChannelId=7, data=0x555556237010)
at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:736
#12 0x00007ffff7efe88c in drdynvc_process_data (drdynvc=0x5555555d8090, Sp=1, cbChId=0, s=0x555556237010) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:1169
#13 0x00007ffff7efeb61 in drdynvc_order_recv (drdynvc=0x5555555d8090, s=0x555556237010) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:1235
#14 0x00007ffff7eff254 in drdynvc_virtual_channel_client_thread (arg=0x5555555d8090) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:1389
#15 0x00007ffff7b3b300 in thread_launcher (arg=0x55555657f490) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/winpr/libwinpr/thread/thread.c:530
#16 0x00007ffff788c6b3 in start_thread (arg=<optimized out>) at pthread_create.c:442
#17 0x00007ffff791229c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
(gdb) frame 1
#1 0x0000555555559410 in wlf_copy_image (src=0x7fffe1940030, srcStride=7680, srcWidth=1920, srcHeight=1019, dst=0x7fffd8997000, dstStride=7680, dstWidth=1920, dstHeight=1019, area=0x7fffdb7fd8d0, scale=0)
at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/client/Wayland/wlfreerdp.c:710
710 memcpy(&pdst[dstOffset], &psrc[srcOffset], width * 4);
(gdb) info locals
srcOffset = 6144000
dstOffset = 6144000
i = 0
baseDstOffset = 6144000
psrc = 0x7fffe1940030 "\376\377", <incomplete sequence \371>
baseSrcOffset = 6144000
width = 1920
height = 219
pdst = 0x7fffd8997000 ""
rc = 0
Thread 38 "wlfreerdp" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffdb7fe640 (LWP 941859)]
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
(gdb) backtrace
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1 0x00007ffff788e55f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007ffff783e182 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007ffff782846a in __GI_abort () at abort.c:79
#4 0x00007ffff7828395 in __assert_fail_base (fmt=0x7ffff79bad80 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7ffff7ddc81b "src->data",
file=0x7ffff7ddc7a0 "/var/tmp/portage/net-misc/freerdp-2.8.0/work/freerdp-2.8.0/libfreerdp/codec/region.c", line=499, function=<optimized out>) at assert.c:92
#5 0x00007ffff7836e82 in __GI___assert_fail (assertion=0x7ffff7ddc81b "src->data", file=0x7ffff7ddc7a0 "/var/tmp/portage/net-misc/freerdp-2.8.0/work/freerdp-2.8.0/libfreerdp/codec/region.c", line=499,
function=0x7ffff7ddc8e0 <__PRETTY_FUNCTION__.2> "region16_union_rect") at assert.c:101
#6 0x00007ffff7d4e7d2 in region16_union_rect (dst=0x55555658fdb8, src=0x55555658fdb8, rect=0x7fffdb7fd850) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/codec/region.c:499
#7 0x00007ffff7ec7c9c in UwacWindowAddDamage (window=0x555556556500, x=1424, y=960, width=160, height=32) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/uwac/libuwac/uwac-window.c:718
#8 0x0000555555557d0f in wl_update_buffer (context_w=0x5555555783d0, ix=1424, iy=960, iw=160, ih=32) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/client/Wayland/wlfreerdp.c:119
#9 0x0000555555557e85 in wl_end_paint (context=0x5555555783d0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/client/Wayland/wlfreerdp.c:151
#10 0x00007ffff7ceef59 in update_end_paint (update=0x55555558f9e0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/core/update.c:3022
#11 0x00007ffff7c54abd in gdi_OutputUpdate (gdi=0x555556229400, surface=0x7fffd509e0e0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/gdi/gfx.c:188
#12 0x00007ffff7c54be2 in gdi_UpdateSurfaces (context=0x555556567290) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/gdi/gfx.c:225
#13 0x00007ffff7c54ccb in gdi_EndFrame (context=0x555556567290, endFrame=0x7fffdb7fda90) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/gdi/gfx.c:258
#14 0x00007ffff7f3adc3 in rdpgfx_recv_end_frame_pdu (callback=0x7fffd4000d90, s=0x7fffd5165cc0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/rdpgfx/client/rdpgfx_main.c:873
#15 0x00007ffff7f3e83f in rdpgfx_recv_pdu (callback=0x7fffd4000d90, s=0x7fffd5165cc0) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/rdpgfx/client/rdpgfx_main.c:1688
#16 0x00007ffff7f3efb6 in rdpgfx_on_data_received (pChannelCallback=0x7fffd4000d90, data=0x5555565d3d20) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/rdpgfx/client/rdpgfx_main.c:1808
#17 0x00007ffff7efd511 in dvcman_receive_channel_data (drdynvc=0x5555555d8090, pChannelMgr=0x5555555da880, ChannelId=7, data=0x5555565d3d20)
at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:736
#18 0x00007ffff7efe88c in drdynvc_process_data (drdynvc=0x5555555d8090, Sp=1, cbChId=0, s=0x5555565d3d20) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:1169
#19 0x00007ffff7efeb61 in drdynvc_order_recv (drdynvc=0x5555555d8090, s=0x5555565d3d20) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:1235
#20 0x00007ffff7eff254 in drdynvc_virtual_channel_client_thread (arg=0x5555555d8090) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/channels/drdynvc/client/drdynvc_main.c:1389
#21 0x00007ffff7b3b300 in thread_launcher (arg=0x55555657f490) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/winpr/libwinpr/thread/thread.c:530
#22 0x00007ffff788c6b3 in start_thread (arg=<optimized out>) at pthread_create.c:442
#23 0x00007ffff791229c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
(gdb) frame 6
#6 0x00007ffff7d4e7d2 in region16_union_rect (dst=0x55555658fdb8, src=0x55555658fdb8, rect=0x7fffdb7fd850) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/libfreerdp/codec/region.c:499
499 assert(src->data);
(gdb) list
494 REGION16_DATA* tmpItems = NULL;
495 RECTANGLE_16* dstRect = NULL;
496 UINT32 usedRects, srcNbRects;
497 UINT16 topInterBand;
498 assert(src);
499 assert(src->data);
500 assert(dst);
501 srcExtents = region16_extents(src);
502 dstExtents = region16_extents_noconst(dst);
503
(gdb) info locals
srcExtents = 0x1db7fd830
dstExtents = 0x20
currentBand = 0x780
endSrcRect = 0x709640
nextBand = 0x7fffd8997000
newItems = 0x0
tmpItems = 0x0
dstRect = 0x0
usedRects = 7680
srcNbRects = 0
topInterBand = 21845
__PRETTY_FUNCTION__ = "region16_union_rect"
(gdb) frame 7
#7 0x00007ffff7ec7c9c in UwacWindowAddDamage (window=0x555556556500, x=1424, y=960, width=160, height=32) at /usr/src/debug/net-misc/freerdp-2.8.0/freerdp-2.8.0/uwac/libuwac/uwac-window.c:718
718 if (!region16_union_rect(&buf->damage, &buf->damage, &box))
(gdb) list
713
714 buf = &window->buffers[window->drawingBufferIdx];
715 if (!buf)
716 return UWAC_ERROR_INTERNAL;
717
718 if (!region16_union_rect(&buf->damage, &buf->damage, &box))
719 return UWAC_ERROR_INTERNAL;
720
721 buf->dirty = true;
722 return UWAC_SUCCESS;
(gdb) info locals
box = {left = 1424, top = 960, right = 1584, bottom = 992}
buf = 0x55555658fdb0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment