SIGSEGV(SEGV_MAPERR) 报错
※鋒芒※ 发布于2018-01 浏览:9943 回复:6
1
收藏
Android语音合成Sdk在华为手机上偶现这个错,频率很高。
libbd_etts.so 请问该动态链接库里是否使用了广播不断接收字符串,并且在销毁时未进行移除handler?
 
贴出日志:
 
1 #00 pc 0001755c /system/lib/libc.so (memcpy+96) [armeabi-v7a]
2 #01 pc 00118067 /data/app/cn.caocaokeji.driver-1/lib/arm/libbd_etts.so (SPEECH::read_cnn_weight(__sFILE*, SPEECH::TmpConvCfg*)+282) [armeabi-v7a]
3 #02 pc 0011840f /data/app/cn.caocaokeji.driver-1/lib/arm/libbd_etts.so (SPEECH::loadGlobalW_old_format(__sFILE*, int)+170) [armeabi-v7a]
4 #03 pc 001177d9 /data/app/cn.caocaokeji.driver-1/lib/arm/libbd_etts.so (SPEECH::loadGlobalW_2(__sFILE*, long, long, int, _hmmmmfhead*)+60) [armeabi-v7a]
5 #04 pc 00117533 /data/app/cn.caocaokeji.driver-1/lib/arm/libbd_etts.so (loadGlobalW_2(__sFILE*, long, long, int, _hmmmmfhead*)+38) [armeabi-v7a]
6 #05 pc 000989a9 /data/app/cn.caocaokeji.driver-1/lib/arm/libbd_etts.so (etts::PlResource::load_model(char const*, __sFILE*, unsigned int)+112) [armeabi-v7a]
7 #06 pc 00098c29 /data/app/cn.caocaokeji.driver-1/lib/arm/libbd_etts.so (etts::PlResource::initial(char const*, __sFILE*, unsigned int, etts::tag_mem_stack_array*)+16) [armeabi-v7a]
8 #07 pc 000883c7 /data/app/cn.caocaokeji.driver-1/lib/arm/libbd_etts.so (etts::text_lib_load_res_mandarin(__sFILE*, TTS_RES_SEC*, char*, etts::TEXTLIB*, etts::tag_mem_stack_array*)+118) [armeabi-v7a]
9 #08 pc 000884bf /data/app/cn.caocaokeji.driver-1/lib/arm/libbd_etts.so (etts::text_lib_load_res(__sFILE*, TTS_RES_SEC*, char*, long, etts::tag_mem_stack_array*, TTS_LITE_RES_TYPE)+94) [armeabi-v7a]
10 #09 pc 0011150d /data/app/cn.caocaokeji.driver-1/lib/arm/libbd_etts.so [armeabi-v7a]
11 #10 pc 0011183f /data/app/cn.caocaokeji.driver-1/lib/arm/libbd_etts.so (etts::bd_etts_engine_init_control(char const*, char const*, long*)+730) [armeabi-v7a]
12 #11 pc 00111ddb /data/app/cn.caocaokeji.driver-1/lib/arm/libbd_etts.so (etts::bd_etts_engine_init(char const*, char const*, long*)+50) [armeabi-v7a]
13 #12 pc 00001a97 /data/app/cn.caocaokeji.driver-1/lib/arm/libbdtts.so (Java_com_baidu_tts_jni_EmbeddedSynthesizerEngine_bdTTSEngineInit+66) [armeabi-v7a]
14 #13 pc 000a2f19 /system/lib/libart.so [armeabi-v7a]
15 java:
16 com.baidu.tts.b.a.b.e.a(OfflineSynthesizer.java:76)
17 com.baidu.tts.b.a.b.d.a(MixSynthesizer.java:140)
18 com.baidu.tts.b.a.a.c.s(EngineExecutor.java:132)
19 com.baidu.tts.b.a.a.h.b(UninitialEngineState.java:32)
20 com.baidu.tts.b.a.a.a.g(AEngineExecutor.java:47)
21 com.baidu.tts.j.a.b(ASafeLife.java:27)
22 com.baidu.tts.a.c.b.b(TtsAdapter.java:51)
23 com.baidu.tts.a.c.c.a(Ttser.java:20)
24 com.baidu.tts.o.a.c.h(Tts.java:233)
25 com.baidu.tts.o.a.d.b(UninitialState.java:32)
26 com.baidu.tts.o.a.c.b(Tts.java:57)
收藏
点赞
1
个赞
共6条回复 最后由用户已被禁言回复于2022-04
#7用户已被禁言回复于2019-09
#3 ※鋒芒※回复
后面通过排查定位到了原因,自己来回答一下吧。 由于使用了百度语音的离线在线混合版,需要通过读取资源文件下的离线资源放置到手机内, .so文件会去检测并使用。 这个场景是初始化崩溃导致了从asset里读取的资源没有读完,原大小7.2M但是读取到的文件大小不一致,自己在手机里能看到。 解决办法很简单,先判断文件是否存在然后检测大小是否一致,不一致就覆盖。 分享自己封装的一个语音组件,支持更换底层SDK:http://blog.csdn.net/hnytdangyao/article/details/79174449
展开

感谢您的分享。

0
#6用户已被禁言回复于2019-09
#5 江宇王子回复
我也遇到了相似的问题,请问一下怎么检测asset读出来的资源是否完整?
展开

看博主的答案应该是检测文件大小是否一致。

0
#5江宇王子回复于2019-08

我也遇到了相似的问题,请问一下怎么检测asset读出来的资源是否完整?

0
#4松哥553回复于2018-04

我也遇到这样的问题!我没太明白你说的意思,麻烦可以重新解释一下嘛,谢啦

0
#3※鋒芒※回复于2018-02

后面通过排查定位到了原因,自己来回答一下吧。

由于使用了百度语音的离线在线混合版,需要通过读取资源文件下的离线资源放置到手机内, .so文件会去检测并使用。 这个场景是初始化崩溃导致了从asset里读取的资源没有读完,原大小7.2M但是读取到的文件大小不一致,自己在手机里能看到。

解决办法很简单,先判断文件是否存在然后检测大小是否一致,不一致就覆盖。

分享自己封装的一个语音组件,支持更换底层SDK:http://blog.csdn.net/hnytdangyao/article/details/79174449

3
#2※鋒芒※回复于2018-01

目前已知的手机型号是 华为麦芒4,并且还有其他的手机一直不断的在后台出现问题。

1
TOP
切换版块