[Python-apps-team] Bug#970687: libproxy: px_proxy_factory_get_proxies not thread-safe
Tobias Klausmann
klausman at schwarzvogel.de
Thu Nov 19 13:18:50 GMT 2020
Hi,
as noted above, my use for this fix is quodlibet not segfaulting
anymore as describe in bug 970687. So I got the latest libproxy
source package (0.4.15-15) and built it, and then installed both
the bianry package and the debug symbols.
Quodlibet still dies, even with the new libproxy, and still *in*
libproxy, as indicated by the attached gdb backtrace.
Best,
Tobias
-------------- next part --------------
(gdb) bt full
#0 __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
set = {__val = {0, 0, 140736917905544, 1911038256753492992, 140737119416064, 140737264021063, 0, 0, 140736917905568, 0, 140736917907528, 0, 18446744073709551608, 7, 140736918138176, 140736918138874}}
pid = <optimized out>
tid = <optimized out>
#1 0x00007ffff7c50537 in __GI_abort () at abort.c:79
save_stage = 1
act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {140737264047564, 0, 0, 2, 9223372036854775822, 0 <repeats 11 times>}}, sa_flags = 0, sa_restorer = 0x0}
sigs = {__val = {32, 0 <repeats 15 times>}}
#2 0x00007ffff5231301 in () at /lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007ffff523c0cf in () at /lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007ffff523c220 in __gxx_personality_v0 () at /lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007ffff2a0fe81 in __libunwind_Unwind_Resume () at /lib/x86_64-linux-gnu/libunwind.so.8
#6 0x00007fffde032fd5 in __gnu_cxx::new_allocator<libproxy::url>::~new_allocator() (this=<optimized out>, __in_chrg=<optimized out>) at /usr/include/c++/10/ext/new_allocator.h:89
proxy = <optimized out>
response = std::vector of length 0, capacity 0
#7 std::allocator<libproxy::url>::~allocator() (this=<optimized out>, __in_chrg=<optimized out>) at /usr/include/c++/10/bits/allocator.h:162
proxy = <optimized out>
response = std::vector of length 0, capacity 0
#8 std::_Vector_base<libproxy::url, std::allocator<libproxy::url> >::_Vector_impl::~_Vector_impl() (this=<optimized out>, __in_chrg=<optimized out>) at /usr/include/c++/10/bits/stl_vector.h:128
proxy = <optimized out>
response = std::vector of length 0, capacity 0
#9 std::_Vector_base<libproxy::url, std::allocator<libproxy::url> >::~_Vector_base() (this=<optimized out>, __in_chrg=<optimized out>) at /usr/include/c++/10/bits/stl_vector.h:337
proxy = <optimized out>
response = std::vector of length 0, capacity 0
#10 std::vector<libproxy::url, std::allocator<libproxy::url> >::~vector() (this=<optimized out>, __in_chrg=<optimized out>) at /usr/include/c++/10/bits/stl_vector.h:683
proxy = <optimized out>
response = std::vector of length 0, capacity 0
#11 envvar_config_extension::get_config(libproxy::url const&) (this=<optimized out>, dst=<optimized out>) at /usr/include/c++/10/bits/stl_vector.h:678
proxy = <optimized out>
response = std::vector of length 0, capacity 0
#12 0x00007fffde02a23c in libproxy::proxy_factory::get_config(libproxy::url&, std::vector<libproxy::url, std::allocator<libproxy::url> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (this=0x7fffe0007320, realurl=..., config=std::vector of length 0, capacity 0, ignore="") at ./libproxy/proxy.cpp:265
configurator = 0x7fffe001b460
i = 0x7fffe001b460
configs = std::vector of length 1, capacity 1 = {0x7fffe001b460}
#13 0x00007fffde02a656 in libproxy::proxy_factory::get_proxies(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
(this=0x7fffe0007320, realurl="http://stream.antenne.com:80/") at ./libproxy/proxy.cpp:206
configs = std::vector of length 0, capacity 0
ignore = ""
dst = {m_orig = "http://stream.antenne.com:80/", m_scheme = "http", m_user = "", m_pass = "", m_host = "stream.antenne.com", m_port = 80, m_path = "/", m_query = "", m_ips = 0x0}
response = std::vector of length 0, capacity 0
#14 0x00007fffde02aad1 in px_proxy_factory_get_proxies(pxProxyFactory_*, char const*) (self=0x7fffe0007320, url=0x7fffe003c160 "http://stream.antenne.com:80/") at ./libproxy/proxy.cpp:465
proxies = std::vector of length 0, capacity 0
retval = <optimized out>
#15 0x00007fffdf64955f in () at /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so
#16 0x00007ffff704afbe in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0
#17 0x00007ffff72f76e4 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007ffff72f6dfd in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007ffff7f95ea7 in start_thread (arg=<optimized out>) at pthread_create.c:477
ret = <optimized out>
pd = <optimized out>
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {140736917911296, -2084462071721387667, 140737103353358, 140737103353359, 140736917909440, 8396800, 2084387303329208685, 2084444491399272813}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = 0
#20 0x00007ffff7d28d4f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
More information about the Python-apps-team
mailing list