在播放曲目后使用sp_session_logout进行Segfault

时间:2013-05-12 21:07:45

标签: c segmentation-fault spotify libspotify

如果我在播放歌曲后尝试调用sp_session_logout,则会出现分段错误。我不能真正说出段错误,因为我没有符号,

使用以下代码,每次调用注销后都会发生段错误 https://gist.github.com/ivankelly/5564318

#0  0x00007ffff7ac5746 in ?? () from /home/ivan/Apps/lib/libspotify.so.12
#1  0x00007ffff7a38289 in ?? () from /home/ivan/Apps/lib/libspotify.so.12
#2  0x00007ffff7a38535 in ?? () from /home/ivan/Apps/lib/libspotify.so.12
#3  0x00007ffff7a39b5a in ?? () from /home/ivan/Apps/lib/libspotify.so.12
#4  0x00007ffff7a39c86 in ?? () from /home/ivan/Apps/lib/libspotify.so.12
#5  0x00007ffff79fbc8b in ?? () from /home/ivan/Apps/lib/libspotify.so.12
#6  0x00007ffff7ad05b3 in sp_session_process_events () from /home/ivan/Apps/lib/libspotify.so.12
#7  0x0000000000401986 in main (argc=3, argv=0x7fffffffe6f8) at /home/ivan/src/spotify_test/test_spotify.c:137

这是在libspotify 12.1.51(x86_64)的debian sid上。

1 个答案:

答案 0 :(得分:3)

您正在libspotify回调中调用注销,特别是与音乐传递​​相关的回调。音乐传递回调发生在他们自己的线程上,并且libspotify 不是线程安全的 - 你必须调用“主”线程上的所有API(特别是你调用{{1}的线程})。

你的崩溃很可能是通过在你的sp_session_create回调被触发时不调用logout来解决的,或者是通过编组到主线程并在那里调用logout来修复的。