summaryrefslogtreecommitdiffstats
path: root/sway/main.c
diff options
context:
space:
mode:
authorLibravatar Dominique Martinet <asmadeus@codewreck.org>2018-07-04 14:45:35 +0900
committerLibravatar Dominique Martinet <asmadeus@codewreck.org>2018-07-04 18:47:11 +0900
commitb0918b1058a704675fc2590ee9ff3bef6324f734 (patch)
treefdd2c89fe953f6414bbcf289eb0e39b7289cd030 /sway/main.c
parentMerge pull request #2202 from RyanDwyer/fix-focus-damage (diff)
downloadsway-b0918b1058a704675fc2590ee9ff3bef6324f734.tar.gz
sway-b0918b1058a704675fc2590ee9ff3bef6324f734.tar.zst
sway-b0918b1058a704675fc2590ee9ff3bef6324f734.zip
ipc-server: add display destroy listener and remove ipc_terminate
wl_event_source_remove() is illegal after display has been destroyed, so just destroy everything when we still can. ==20392==ERROR: AddressSanitizer: heap-use-after-free on address 0x607000001240 at pc 0x00000048e86e bp 0x7ffe4b557e00 sp 0x7ffe4b557df0 READ of size 8 at 0x607000001240 thread T0 #0 0x48e86d in wl_list_insert ../common/list.c:149 #1 0x7fdf673d4d7d in wl_event_source_remove src/event-loop.c:487 #2 0x41b742 in ipc_terminate ../sway/ipc-server.c:94 #3 0x40b1ad in main ../sway/main.c:440 #4 0x7fdf6664c18a in __libc_start_main ../csu/libc-start.c:308 #5 0x409359 in _start (/opt/wayland/bin/sway+0x409359) 0x607000001240 is located 48 bytes inside of 72-byte region [0x607000001210,0x607000001258) freed by thread T0 here: #0 0x7fdf692c4880 in __interceptor_free (/lib64/libasan.so.5+0xee880) #1 0x7fdf673d371a in wl_display_destroy src/wayland-server.c:1097 previously allocated by thread T0 here: #0 0x7fdf692c4c48 in malloc (/lib64/libasan.so.5+0xeec48) #1 0x7fdf673d4d9e in wl_event_loop_create src/event-loop.c:522 #2 0x40acb2 in main ../sway/main.c:363 #3 0x7fdf6664c18a in __libc_start_main ../csu/libc-start.c:308
Diffstat (limited to 'sway/main.c')
-rw-r--r--sway/main.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/sway/main.c b/sway/main.c
index 8b0b8612..96e41bbc 100644
--- a/sway/main.c
+++ b/sway/main.c
@@ -437,8 +437,6 @@ int main(int argc, char **argv) {
437 437
438 server_fini(&server); 438 server_fini(&server);
439 439
440 ipc_terminate();
441
442 if (config) { 440 if (config) {
443 free_config(config); 441 free_config(config);
444 } 442 }