Hi; the dbus-display-test when built with the clang address sanitizer
produces a lot of memory leaks. Repro:
1) configure with:
'--cc=clang' '--cxx=clang++' '--enable-ubsan' '--enable-asan'
'--target-list=x86_64-softmmu,x86_64-linux-user,i386-softmmu,i386-linux-user'
'--disable-docs' '--enable-debug'
and build.
2) run the test with:
(cd build/x86-tgt-san-dbg/ && QTEST_QEMU_BINARY=./qemu-system-x86_64
./tests/qtest/dbus-display-test ) 2>&1|less
The 'console' subtest will cause it to output a lot of leak reports, e.g.
Direct leak of 208 byte(s) in 2 object(s) allocated from:
#0 0x64e038cdfadd in calloc
(/home/pm215/qemu/build/x86-tgt-san-dbg/tests/qtest/dbus-display-test+0x258add)
(BuildId: aa998e9bf2752fab128fa39c22c94bbb5b77ce2d)
#1 0x7ef13b191771 in g_malloc0
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x63771) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#2 0x7ef13b2b7f65 in g_type_create_instance
(/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x40f65) (BuildId:
91bcc5d52326f5490fa62acc824cb87c700d0f8a)
#3 0x7ef13b29da63
(/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x26a63) (BuildId:
91bcc5d52326f5490fa62acc824cb87c700d0f8a)
#4 0x7ef13b29f015 in g_object_new_with_properties
(/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x28015) (BuildId:
91bcc5d52326f5490fa62acc824cb87c700d0f8a)
#5 0x7ef13b29ff70 in g_object_new
(/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x28f70) (BuildId:
91bcc5d52326f5490fa62acc824cb87c700d0f8a)
#6 0x7ef13b428809
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0x14e809) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#7 0x7ef13b3e7d96
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0x10dd96) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#8 0x7ef13b3e83c2
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0x10e3c2) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#9 0x7ef13b3fcad7
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0x122ad7) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#10 0x7ef13b38b7ba
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0xb17ba) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#11 0x7ef13b38b7f4
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0xb17f4) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#12 0x7ef13b18b45d
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x5d45d) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#13 0x7ef13b1ea976
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0xbc976) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#14 0x7ef13b18bf46 in g_main_loop_run
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x5df46) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#15 0x7ef13b3f4581
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0x11a581) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#16 0x7ef13b1b9e61
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x8be61) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#17 0x64e038cdd3dc in asan_thread_start(void*) asan_interceptors.cpp.o
Indirect leak of 1228800 byte(s) in 1 object(s) allocated from:
#0 0x64e038cdf8f3 in malloc
(/home/pm215/qemu/build/x86-tgt-san-dbg/tests/qtest/dbus-display-test+0x2588f3)
(BuildId: aa998e9bf2752fab128fa39c22c94bbb5b77ce2d)
#1 0x7ef13b190ac9 in g_malloc
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x62ac9) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#2 0x7ef13b1a6532 in g_memdup2
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x78532) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#3 0x7ef13b1d2d81 in g_variant_new_fixed_array
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0xa4d81) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#4 0x7ef13b425412
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0x14b412) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#5 0x7ef13b42520c
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0x14b20c) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#6 0x7ef13b3f0190 in g_dbus_message_new_from_blob
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0x116190) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#7 0x7ef13b3fc6a2
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0x1226a2) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#8 0x7ef13b38b7ba (/lib/x86_64-linux-gnu/libgio-2.0.so.0+0xb17ba)
(BuildId: ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#9 0x7ef13b38b7f4 (/lib/x86_64-linux-gnu/libgio-2.0.so.0+0xb17f4)
(BuildId: ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#10 0x7ef13b18b45d
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x5d45d) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#11 0x7ef13b1ea976
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0xbc976) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#12 0x7ef13b18bf46 in g_main_loop_run
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x5df46) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#13 0x7ef13b3f4581
(/lib/x86_64-linux-gnu/libgio-2.0.so.0+0x11a581) (BuildId:
ebdb30973c66c71f7f9fc82981b95f418ea1dfb1)
#14 0x7ef13b1b9e61
(/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x8be61) (BuildId:
116e142b9b52c8a4dfd403e759e71ab8f95d8bb3)
#15 0x64e038cdd3dc in asan_thread_start(void*) asan_interceptors.cpp.o
and many others, for a total of:
SUMMARY: AddressSanitizer: 1232414 byte(s) leaked in 86 allocation(s).
Nothing in the backtraces is in the test program itself -- it all
goes straight from libglib to libgio to libglib again. So I'm
not sure exactly what's going on here, but presumably we're
failing to dereference something we ought to.
Could you have a look, please?
thanks
-- PMM