perfetto: crash on context teardown / driver unload
I was trying to reproduce some flakes we were seeing in CI with some deqp-egl tests, but instead managed to reproduce crashes, which went away when I built without perfetto enabled. It looks like perfetto is creating a thread that is not destroyed before ${driver}_dri.so
is unloaded:
...
[Thread 0xffff8e7cf120 (LWP 3379675) exited]
[Thread 0xffffb37ef120 (LWP 3379639) exited]
[Thread 0xffffb0f9f120 (LWP 3379648) exited]
[Thread 0xffff8efdf120 (LWP 3379651) exited]
[Thread 0xffff8f7ef120 (LWP 3379650) exited]
[Thread 0xffffb17af120 (LWP 3379647) exited]
[Thread 0xffffb1fbf120 (LWP 3379646) exited]
[Thread 0xffff8ffff120 (LWP 3379649) exited]
[Thread 0xffffb27cf120 (LWP 3379645) exited]
[Thread 0xffffb2fdf120 (LWP 3379644) exited]
[Thread 0xffffeb72b120 (LWP 3379642) exited]
[Thread 0xffffb3fff120 (LWP 3379643) exited]
[Thread 0xffffeaf1b120 (LWP 3379641) exited]
3379195:
3379195: calling fini: /home/robclark/src/mesa/release/b/lib64/dri/msm_dri.so [0]
3379195:
3379195:
3379195: calling fini: /lib64/libzstd.so.1 [0]
3379195:
3379195:
3379195: calling fini: /lib64/libvulkan.so.1 [0]
3379195:
3379195:
3379195: file=/home/robclark/src/mesa/release/b/lib64/dri/msm_dri.so [0]; destroying link map
3379195:
3379195: file=/lib64/libzstd.so.1 [0]; destroying link map
3379195:
3379195: file=/lib64/libvulkan.so.1 [0]; destroying link map
Missing separate debuginfos, use: dnf debuginfo-install expat-2.2.10-1.fc34.aarch64 libX11-1.7.0-2.fc34.aarch64 libX11-xcb-1.7.0-2.fc34.aarch64 libXau-1.0.9-5.fc34.aarch64 libXext-1.3.4-5.fc34.aarch64 libdrm-2.4.103-1.fc34.aarch64 libedit-3.1-33.20191231cvs.fc33.aarch64 libffi-3.1-27.fc34.aarch64 libgcc-11.0.0-0.11.fc34.aarch64 libpng-1.6.37-6.fc34.aarch64 libstdc++-11.0.0-0.11.fc34.aarch64 libwayland-client-1.18.0-2.fc33.aarch64 libwayland-server-1.18.0-2.fc33.aarch64 libxcb-1.13.1-6.fc34.aarch64 libxshmfence-1.3-7.fc33.aarch64 libzstd-1.4.7-1.fc34.aarch64 llvm-libs-11.0.1-4.fc34.aarch64 ncurses-libs-6.2-3.20200222.fc33.aarch64 sssd-client-2.4.0-6.fc34.aarch64 vulkan-loader-1.2.154.1-1.fc34.aarch64 zlib-1.2.11-23.fc34.aarch64
--Type <RET> for more, q to quit, c to continue without paging--c
Thread 3 "deqp-egl" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xfffff0d49120 (LWP 3379199)]
0x0000fffff6f5f58c in ?? ()
(gdb) info threads
Id Target Id Frame
1 Thread 0xfffff7792fe0 (LWP 3379195) "deqp-egl" 0x0000fffff7fd1fd4 in _dl_close_worker () from /lib/ld-linux-aarch64.so.1
* 3 Thread 0xfffff0d49120 (LWP 3379199) "deqp-egl" 0x0000fffff6f5f58c in ?? ()
40 Thread 0xffffea70b120 (LWP 3379236) "deqp-egl" 0x0000fffff794ad30 in poll () from /lib64/libc.so.6
61 Thread 0xffffe96eb120 (LWP 3379257) "deqp-egl" 0x0000fffff794ad30 in poll () from /lib64/libc.so.6
98 Thread 0xffffe9efb120 (LWP 3379295) "deqp-egl" 0x0000fffff794ad30 in poll () from /lib64/libc.so.6
119 Thread 0xffffe8edb120 (LWP 3379316) "deqp-egl" 0x0000fffff794ad30 in poll () from /lib64/libc.so.6
156 Thread 0xffffd7fff120 (LWP 3379353) "deqp-egl" 0x0000fffff794ad30 in poll () from /lib64/libc.so.6
177 Thread 0xffffd77ef120 (LWP 3379374) "deqp-egl" 0x0000fffff6f5f58c in ?? ()
214 Thread 0xffffd6fdf120 (LWP 3379412) "deqp-egl" 0x0000fffff794ad30 in poll () from /lib64/libc.so.6
235 Thread 0xffffd67cf120 (LWP 3379433) "deqp-egl" 0x0000fffff794ad30 in poll () from /lib64/libc.so.6
320 Thread 0xffffd5fbf120 (LWP 3379518) "deqp-egl" 0x0000fffff794ad30 in poll () from /lib64/libc.so.6
357 Thread 0xffffd57af120 (LWP 3379555) "deqp-egl" 0x0000fffff794ad30 in poll () from /lib64/libc.so.6
442 Thread 0xffffd4f9f120 (LWP 3379640) "deqp-egl" 0x0000fffff794ad30 in poll () from /lib64/libc.so.6
(gdb)