【问题标题】:Android Libspotify Image Loading SIGSEGVAndroid Libspotify 图像加载 SIGSEGV
【发布时间】:2014-04-11 15:40:45
【问题描述】:

所以这个特殊的 libspotify 错误让我有点难过。我的应用程序基本上会加载用户播放列表,并允许用户进入这些播放列表,此时它会填充曲目数据。

所以问题出在函数上:

sp_image* image = sp_image_create(session, image_id);

(调用后) const byte* image_id = sp_album_cover(专辑, SP_IMAGE_SIZE_SMALL);

现在这在某些时候可以正常工作,但经常会弹出“传递给 dlfree() 的损坏内存,SIGSEGV”错误,这会导致。所以我首先寻找的是内存错误,但有大量可用内存,并且发生这种情况时没有空指针。调用从库发生到 libc.so,因此它比我可以访问的库更深入。

这显然与内存有关,但奇怪的是它可能在加载 10 首曲目或 400 首曲目之后发生,但从我的测试设备来看,它只发生在 Nexus 4 和 Nexus 7 上,而不是 Galaxy S3,或者HTC的感觉。首先想到的是 N4 和 N7 是高通设备,但这就是我必须继续说的,可能与任何事情无关!

非常感谢任何帮助!

【问题讨论】:

  • 准确地说,错误是:04-11 16:46:20.957: A/libc(4599): 无效地址或损坏块地址 0x6a031770 传递给 dlfree 04-11 16:46:20.957 : A/libc(4599): 0xdeadbaad (code=1) 处的致命信号 11 (SIGSEGV),线程 4631(网络线程)
  • 这没什么好说的,但我猜它可能是释放后使用或线程错误。检查您是否拥有正确数量的 add_refs 和 release,并且您永远不会在不同的线程上同时调用 spotify 函数。
  • 是的,我在参考发布方面掌握得很好,所以我知道我很好。我只从一个线程中调用 spotify 函数,所以我对此也很有信心。有点没主意了!我唯一发现的是 sp_image_data(image, &size); 产生的 size 变量。在它崩溃之前是巨大的,我认为在库中它试图释放无意义的内存,我无法阻止它。然而,这只是在黑暗中拍摄。

标签: spotify libspotify


【解决方案1】:

这可能是 libspotify 的错,而不是你的错。这个库在 Android 上从来没有特别稳定(事实上,Spotify 仍然称它为“测试版”),但是他们很快就会用一个类似于 Spotify iOS SDK 的新库来替换它。

我对你的建议是不要使用 libspotify,除非你有压力要马上发货。新的 SDK 可能会解决在 Android 上使用 libspotify 的开发人员所熟悉的许多令人头疼的问题。

编辑:新的Spotify Android SDK 出来了!您应该使用它而不是 libspotify,它会为您省去很多麻烦。

【讨论】:

  • 嗨,尼克,是的,我自己得出这个结论只是因为我已经在我的 spotify 包装器中涵盖了大约一千次所有可能的问题。你有关于那个新图书馆的 ETA 的更多信息吗?您还知道它是否会保留相同类型的函数调用/顺序等,还是只是一种全新的做事方式?感谢您的帮助
  • @James 它于周三发布!请参阅上面的编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多