0

曲の再生後に 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 にあります。

4

1 に答える 1

3

libspotify コールバック、特に音楽配信関連のコールバック内でログアウトを呼び出しています。音楽配信コールバックは独自のスレッドで発生し、libspotifyこのようにスレッド セーフではありません。「メイン」スレッド (具体的には、呼び出したスレッド) ですべての API を呼び出す必要がありますsp_session_create

クラッシュは、test_spotify_end_of_trackコールバックが起動されたときにログアウトを呼び出さないか、メインスレッドにマーシャリングしてそこでログアウトを呼び出すことで、おそらく修正できます。

于 2013-05-12T21:46:04.340 に答える