android-opencc
android-opencc copied to clipboard
使用中发现了一个bug
app 第一次打开后 使用 转换出现 异常 ,关掉再打开就没异常了。
03-19 15:02:32.780 143-143/? I/DEBUG: backtrace: 03-19 15:02:32.780 143-143/? I/DEBUG: #00 pc 0001cbc0 /data/app-lib/cn.lmcw.ebook-1/liblib-opencc-android.so (opencc::ConversionChain::Convert(std::__ndk1::shared_ptropencc::Segments const&) const+96) 03-19 15:02:32.780 143-143/? I/DEBUG: memory map around fault addr 7461646f: 03-19 15:02:32.780 143-143/? I/DEBUG: 1a000000-1c111000 rw- 03-19 15:02:32.780 143-143/? I/DEBUG: (no map for address) 03-19 15:02:32.780 143-143/? I/DEBUG: 7a386000-7a388000 rw-
@dingyong666 请问你的手机型号和系统版本是?
@qichuan
手机型号是 一加 3t android 6.1 系统,并非只在在 当前手机出现过 ,v7a、 x86 模拟器也出现了,我是用的时候是 在子线程里面 然后 for 循环 转换 一个 List 的数据,我有2个猜想 第一可能是 字符串有特殊字符导致的,因为我注释掉 一个 转换后 就没报错了,第二可能就是 一下子转换的 过多。但是之前的错误就比较奇怪,按理说报错的话就会一直都是报错的,但是第一次报错后重新打开app 就 不报错了(貌似也有很小很小很小的几率出错),代码:
String name, author; for (NovelsList.ResultsBean bean : novelsList.getResults()) { name = bean.getName(); author = bean.getAuthor(); bean.setName(ChineseConverter.convert(name, ConversionType.T2S, getContext())); // 注释掉下面的就不报错了,尝试过 几十次 也没报错, // bean.setAuthor(ChineseConverter.convert(author, // ConversionType.T2S, getContext())); Log.i("aaaaa", name + "__" + author);
请问你使用的是哪个特殊字符?
@qichuan 特殊字符的问题 是我怀疑的,奇怪的是 比如说 第一次安装app 打开运行 报错了,然后你重新打开然后就不报错了,问题基本出现在第一次 打开的时候,我现在去打印一下 翻译到哪个字符 报错的
@qichuan 大神能不能来个简单粗暴的办法,直接 捕获这个 异常。。。
@dingyong666 我找了台6.x的机子也是无法重现问题,你试试减少转换的频率?
@qichuan 大神能不能 捕获一下这个异常,java 层捕获不了,导致app 崩溃
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x34 in tid 28611 (Ft.cn%2FRpit7Ii) @qichuan 像这样的短链会崩溃
我也遇到了 我曾经也用 try 住它,但是没有用 提示显示为 so 库间的异常
同样遇到这个错误,会导致应用FC。 A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xe79188e6a780e2bd in tid 14018 (onPool-worker-2), pid 13209
我也遇到了,我发现好像是线程问题,我加了个锁在转换那里,就不报错了
我也遇到了,我发现好像是线程问题,我加了个锁在转换那里,就不报错了
请问怎么加锁?
我也遇到了,我发现好像是线程问题,我加了个锁在转换那里,就不报错了
请问怎么加锁?
我转换会在主线程和rx线程转换,所以加了
Lock lock = new ReentrantLock();
lock.lock();
target = ChineseConverter.convert();
lock.unlock();