Linux: Segfault in dlopen() when playing some songs

Reply
1 person liked this

Linux: Segfault in dlopen() when playing some songs

lorenzhs
Casual Listener

The Linux client (version 1:1.0.19.106.gb8a7150f from the testing/non-free amd64 repo) crashes reproducibly when playing certain songs. Most songs work, but some songs don't. One example is spotify:track:6b2vkaiDawOcupyDxNNCba

 

gdb tells me that it crashes in dlopen("libavcodec.so.52", 258), which does not exist on my system (Debian unstable). Manually creating a symlink to libavcodec-ffmpeg.so.56.60.100 in /usr/lib/x86_64-linux-gnu prevents the crash, but the songs still don't play.

 

Full backtrace (I would have attached it but the forum does not allow .txt attachments)

 

(gdb) bt full
#0 0x00007fbeb2ad09b3 in strchr () at ../sysdeps/x86_64/multiarch/../strchr.S:32
#1 0x00007fbeb2acb525 in dl_open_worker (a=a@entry=0x7fbe8c679028) at dl-open.c:212
args = 0x7fbe8c679028
file = 0x1 <error: Cannot access memory at address 0x1>
mode = -2147483390
call_map = 0x0
dst = <optimized out>
new = <optimized out>
__PRETTY_FUNCTION__ = "dl_open_worker"
r = <optimized out>
reloc_mode = <optimized out>
nmaps = <optimized out>
l = <optimized out>
maps = <optimized out>
relocation_in_progress = <optimized out>
any_tls = <optimized out>
first_static_tls = <optimized out>
#2 0x00007fbeb2ac7114 in _dl_catch_error (objname=objname@entry=0x7fbe8c679018, errstring=errstring@entry=0x7fbe8c679020, mallocedp=mallocedp@entry=0x7fbe8c679017, operate=operate@entry=0x7fbeb2acb4e0 <dl_open_worker>, args=args@entry=0x7fbe8c679028) at dl-error.c:187
errcode = 2
c =
{objname = 0x7fbe8c679018, errstring = 0x7fbe8c679020, malloced = 0x7fbe8c679017, errcode = 0x7fbe8c678f04, env = {{__jmpbuf = {140456376111400, 5134324876813367226, 2147483906, 1, 15644665, 140457020334144, 5134324877538981818, 5134302389383952314}, __mask_was_saved = 18778701, __saved_mask = {__val = {140456376111064, 30018863594496, 30018832984520, 2, 140456376111264, 140456376111040, 30018945954416, 140456376111071, 140457020334144, 140457018175733, 8007528159407661411, 8241983636739351920, 7162247753406375013, 7782331672395391092, 7306086968480326249, 14132222390120035}}}}}
catchp = 0x7fbe8c67d6c0
old = <optimized out>
#3 0x00007fbeb2acaf63 in _dl_open (file=0x1 <error: Cannot access memory at address 0x1>, mode=-2147483390, caller_dlopen=0xeeb7f9, nsid=-2, argc=<optimized out>, argv=<optimized out>, env=0x7ffe6bd287d8) at dl-open.c:653
args =
{file = 0x1 <error: Cannot access memory at address 0x1>, mode = -2147483390, caller_dlopen = 0xeeb7f9, caller_dl_open = 0x7fbeadc06f09 <dlopen_doit+89>, map = 0x0, nsid = -2, argc = 1, argv = 0x7ffe6bd287c8, env = 0x7ffe6bd287d8}
objname = 0x7fbe8c678fdf "libavcodec.so.52"
errstring = 0x1b4d549c3270 "\277\306\177Q\261\344\377\377?\213\n\002\374\377\377\377ed object file"
malloced = true
errcode = <optimized out>
__PRETTY_FUNCTION__ = "_dl_open"
#4 0x00007fbeadc06f09 in dlopen_doit (a=a@entry=0x7fbe8c679240) at dlopen.c:66
args = 0x7fbe8c679240
#5 0x00007fbeb2ac7114 in _dl_catch_error (objname=0x1b4d503751d0, errstring=0x1b4d503751d8, mallocedp=0x1b4d503751c8, operate=0x7fbeadc06eb0 <dlopen_doit>, args=0x7fbe8c679240) at dl-error.c:187
errcode = 2
c =
{objname = 0x1b4d503751d0, errstring = 0x1b4d503751d8, malloced = 0x1b4d503751c8, errcode = 0x7fbe8c679124, env = {{__jmpbuf = {0, 5134255351692621754, 140456376111680, 30019021973440, 30018863594604, 30018863594604, 5134324876804978618, 5134302389383952314}, __mask_was_saved = 1347681688, __saved_mask = {__val = {30018862813760, 30018835470337, 24, 24, 9249053760225122304, 30018862813792, 30018862813760, 0, 24, 24, 140456376111712, 30018872234432, 140456376111680, 30019021973440, 30018863594604, 30018863594604}}}}}
catchp = 0x7fbe8c67d6c0
old = <optimized out>
#6 0x00007fbeadc074d9 in _dlerror_run (operate=operate@entry=0x7fbeadc06eb0 <dlopen_doit>, args=args@entry=0x7fbe8c679240) at dlerror.c:163
result = 0x1b4d503751c0
#7 0x00007fbeadc06fa1 in __dlopen (file=<optimized out>, mode=<optimized out>) at dlopen.c:87
args = {file = 0x1 <error: Cannot access memory at address 0x1>, mode = 258, new = 0x7fbe8c679260, caller = 0xeeb7f9}
#8 0x0000000000eeb7f9 in ()
#9 0x0000000000edfb3c in ()
#10 0x0000000000ed639a in ()
#11 0x0000000000eec810 in ()
#12 0x0000000000ed6562 in ()
#13 0x0000000000ec2d6b in ()
#14 0x0000000000eaf221 in ()
#15 0x0000000000eafd89 in ()
#16 0x0000000000bac4f9 in ()
#17 0x0000000000ba9399 in ()
#18 0x0000000000ba8af4 in ()
#19 0x0000000000ba94d4 in ()
#20 0x0000000000c5b16f in ()
#21 0x0000000000bb4950 in ()
#22 0x0000000000bb43e8 in ()
#23 0x0000000000bb210f in ()
#24 0x0000000000bc1dc8 in ()
#25 0x0000000000bc1d33 in ()
#26 0x0000000000bc1c4c in ()
#27 0x0000000000bc1b65 in ()
#28 0x0000000000bbf48f in ()
#29 0x0000000000bbf295 in ()
#30 0x0000000000c59e55 in ()
#31 0x0000000000c59d21 in ()
#32 0x0000000000c57b42 in ()
#33 0x0000000000c56efc in ()
#34 0x0000000000c59b20 in ()
#35 0x0000000000c59a22 in ()
#36 0x0000000000c53ffa in ()
#37 0x0000000000c23a60 in ()
#38 0x0000000000c23902 in ()
#39 0x0000000000c64375 in ()
#40 0x0000000000c64241 in ()
#41 0x0000000000c57b42 in ()
#42 0x0000000000c61ba0 in ()
#43 0x0000000000c6404d in ()
#44 0x0000000000c63f62 in ()
#45 0x0000000000b2a7ff in ()
#46 0x0000000000b2a6de in ()
#47 0x0000000000b2a618 in ()
#48 0x0000000000b2b49e in ()
#49 0x0000000000b2b358 in ()
#50 0x0000000000b2b168 in ()
#51 0x00000000005950bb in ()
#52 0x0000000000f6acfb in ()
#53 0x0000000000f6ab98 in ()
#54 0x00000000005950bb in ()
#55 0x0000000000f6d4d9 in ()
#56 0x0000000000f6d378 in ()
#57 0x00000000005950bb in ()
#58 0x0000000000f6acfb in ()
#59 0x0000000000f6ab98 in ()
#60 0x00000000005950bb in ()
#61 0x0000000000f6d4d9 in ()
#62 0x0000000000f6d378 in ()
#63 0x00000000005950bb in ()
#64 0x0000000000f6d4d9 in ()
#65 0x0000000000f6d378 in ()
#66 0x00000000005950bb in ()
#67 0x0000000000f6dbe9 in ()
#68 0x0000000000f6da38 in ()
#69 0x00000000005950bb in ()
#70 0x0000000000841638 in ()
#71 0x000000000084138f in ()
#72 0x0000000000841235 in ()
#73 0x0000000000826e2c in ()
#74 0x0000000000820918 in ()
#75 0x0000000000663699 in ()
#76 0x0000000000597741 in ()
#77 0x00000000005aba0a in ()
#78 0x00000000005ab9aa in ()
#79 0x00000000005ab8dd in ()
#80 0x00000000005ab8b7 in ()
#81 0x00000000005ab851 in ()
#82 0x00000000005ab597 in ()
#83 0x00000000005bbeb0 in boost::asio::detail::task_io_service_operation::complete(boost::asio::detail::task_io_service&, boost::system::error_code const&, unsigned long) ()
#84 0x00000000005bba1a in boost::asio::detail::task_io_service::do_run_one(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&, boost::asio::detail::task_io_service_thread_info&, boost::system::error_code const&) ()
#85 0x00000000005bb255 in boost::asio::detail::task_io_service::run(boost::system::error_code&) ()
#86 0x00000000005bb1a6 in boost::asio::io_service::run() ()
#87 0x00000000005bb170 in ()
#88 0x00000000005bb140 in ()
#89 0x00000000006b0aef in ()
#90 0x00007fbeace94284 in start_thread (arg=0x7fbe8c67d700) at pthread_create.c:333
__res = <optimized out>
pd = 0x7fbe8c67d700
now = <optimized out>
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {140456376129280, -5170746402578794566, 0, 140730707377135, 30018835124232, 140456376129280, 5134324875320195002, 5134253488589731770}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
pagesize_m1 = <optimized out>
sp = <optimized out>
freesize = <optimized out>
__PRETTY_FUNCTION__ = "start_thread"
#91 0x00007fbea973674d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

2 Replies

Re: Linux: Segfault in dlopen() when playing some songs

Steph_B
Roadie
Hey there!

Thanks for reporting.

While we don't officially support Linux, we'll make sure to pass this along to the right team

Let us know if there's anything else :)
Highlighted

Re: Linux: Segfault in dlopen() when playing some songs

berarma
Casual Listener

I started seeing this problem after adding my local music folder to Spotify. When I tried to play any song that Spotify had identified in my local folder, it would try to play the local file instead of streaming it.

 

My system has libavcodec.so.56 installed, and Spotify tries to load versions 54, 53 and 52, none of them exists, then it crashes. I'm using version 1.0.28.89.gf959d4ce-37 on Debian GNU/Linux 8.4.

 

I've disabled my local music file folder as a workaround and the crashes have gone.

SUGGESTED POSTS