cocos2d-x 3.15 js语言 在android 同时播放很多声音时,调用jsb.audioEngine.stopAll, 貌似会崩溃

声音格式为mp3,当我不调用stopAll貌似不崩溃,崩溃日志如下 @panda, @minggo

06-02 10:44:27.713 17196-17427/com.qiyimofang.catchfish D/WebSocket.cpp: WebSocket (0xc32683a0) onConnectionClosed, state: 2 ...
06-02 10:44:27.713 17196-17427/com.qiyimofang.catchfish D/WebSocket.cpp: onConnectionClosed, WebSocket (0xc32683a0) is closing by client synchronously.
06-02 10:44:27.889 17196-17423/com.qiyimofang.catchfish V/AudioMixerController: Play over ...
06-02 10:44:28.085 17196-17423/com.qiyimofang.catchfish V/AudioMixerController: Play over ...
06-02 10:44:28.136 17196-17231/com.qiyimofang.catchfish D/WebSocket.cpp: In the destructor of WebSocket (0xc32683a0)
06-02 10:44:28.137 17196-17231/com.qiyimofang.catchfish D/JniHelper: JniHelper::getJavaVM(), pthread_self() = -701499104
06-02 10:44:28.138 17196-17231/com.qiyimofang.catchfish V/PcmAudioPlayer: PcmAudioPlayer (0xc32ec6c0) stop ...
06-02 10:44:28.139 17196-17231/com.qiyimofang.catchfish V/cocos2d-x debug info: Removing player id=157, state:4
06-02 10:44:28.139 17196-17231/com.qiyimofang.catchfish V/PcmAudioPlayer: PcmAudioPlayer (0xc2705370) stop ...
06-02 10:44:28.139 17196-17231/com.qiyimofang.catchfish V/cocos2d-x debug info: Removing player id=156, state:4
06-02 10:44:28.139 17196-17231/com.qiyimofang.catchfish V/PcmAudioPlayer: PcmAudioPlayer (0xc32ea140) stop ...
06-02 10:44:28.139 17196-17231/com.qiyimofang.catchfish V/cocos2d-x debug info: Removing player id=155, state:4
06-02 10:44:28.140 17196-17231/com.qiyimofang.catchfish V/PcmAudioPlayer: PcmAudioPlayer (0xc326a8d0) stop ...
06-02 10:44:28.140 17196-17231/com.qiyimofang.catchfish V/cocos2d-x debug info: Removing player id=153, state:4
06-02 10:44:28.140 17196-17231/com.qiyimofang.catchfish V/UrlAudioPlayer: UrlAudioPlayer::stop (0xc452e920, 78)
06-02 10:44:28.140 17196-17231/com.qiyimofang.catchfish V/cocos2d-x debug info: Removing player id=78, state:4
06-02 10:44:28.140 17196-17231/com.qiyimofang.catchfish V/UrlAudioPlayer: UrlAudioPlayer::destroy() 0xc452e920
06-02 10:44:28.220 17196-17231/com.qiyimofang.catchfish V/UrlAudioPlayer: UrlAudioPlayer::destroy end
06-02 10:44:28.220 17196-17231/com.qiyimofang.catchfish V/UrlAudioPlayer: ~UrlAudioPlayer(): 0xc452e920
06-02 10:44:28.220 17196-17231/com.qiyimofang.catchfish V/AssetFd: ~AssetFd: -1
06-02 10:44:28.227 17196-17427/com.qiyimofang.catchfish D/WebSocket.cpp: Safely done, msg(231)!
06-02 10:44:28.228 17196-17427/com.qiyimofang.catchfish D/WebSocket.cpp: msg(231) append: 0 + 92 = 92
06-02 10:44:28.228 17196-17427/com.qiyimofang.catchfish D/WebSocket.cpp: msg(231) was totally sent!
06-02 10:44:28.228 17196-17427/com.qiyimofang.catchfish D/WebSocket.cpp: -----------------------------------------------------------
06-02 10:44:28.234 17196-17231/com.qiyimofang.catchfish A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 17231 (GLThread 1960)
                                                                
                                                                [ 06-02 10:44:28.235   464:  464 W/         ]
                                                                debuggerd: handling request: pid=17196 uid=10525 gid=10525 tid=17231
06-02 10:44:29.549 17196-17423/com.qiyimofang.catchfish W/AudioTrack: releaseBuffer() track 0xd12e9c00 disabled due to previous underrun, restarting

换 ogg 试下 。 你的貌似是对的

这个问题我在3.10上就遇到过了 只能很小心的处理,刚还声音原因又崩溃了一次。。。

能否提供一个重现此问题的demo?方便我们跟进这个问题。谢谢。

crashdemo.zip (241.3 KB)

先点播放播放几秒,再点击停止,不是每次都崩溃,是有概率的崩溃

@dumganhar

3.15 spine在真机上也有问题,发的帖子都没人回应!使用 new 来创建spine动画时在iOS真机必崩溃,使用已经被标记为废弃的create方法创建就没问题,3.12没问题,只有3.15有问题。

有啥进展没有?我也遇到同样问题,发生在连续播放一个soundclip。好像iOS也会,但是不如安卓频率高。

V/AudioTrack(14974): obtainBuffer(1024) returned 1024 = 1024 + 0 err 0
D/AudioTrack(14974): start
F/libc (14974): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 15022 (Thread-5377)
D/AEE/AED ( 180): ===AEE===AEE===AEE===
D/AEE/AED ( 180): p 0 poll events 1 revents 0
D/AEE/AED ( 180): not know revents:0
D/AEE/AED ( 180): p 1 poll events 1 revents 0
D/AEE/AED ( 180): not know revents:0
D/AEE/AED ( 180): p 2 poll events 1 revents 1
D/AEE/AED ( 180): aed_main_fork_worker: generator 0x18f80d0, worker 0xbea687a8, recv_fd 15
D/AEE/AED ( 180): p 3 poll events 1 revents 0
D/AEE/AED ( 180): not know revents:0
D/AEE/AED ( 180): p 4 poll events 1 revents 0
D/AEE/AED ( 180): not know revents:0
I/DEBUG (15184): handle_request(15)
I/DEBUG (15184): check process 14974 name:om.carriez.wall
I/DEBUG (15184): tid 15022 abort msg address is:0
I/DEBUG (15184): BOOM: pid=14974 uid=10719 gid=10719 tid=15022

个人感觉是 stop 单个音效 这个函数 用的时候 注意一下。 我目前 停止一个音效,是把这个音效声音 设置0 和 loop 设置false. 这样c++底层会制动回收这个音效。

我的代码里没有stop过任何音效,只是creator自己做了什么就不知道了。

合并一下这两个PR:
https://github.com/cocos2d/cocos2d-x/pull/17748
https://github.com/cocos2d/cocos2d-x/pull/17923
再试试。应该是同一个问题的。

1赞

还有一个问题就是在切换场景时播放audio容易崩溃,不知道在不在上面。

切换场景的时候,游戏会做什么处理?
可以合并PR后再试试看。