android-opencc icon indicating copy to clipboard operation
android-opencc copied to clipboard

使用中发现了一个bug

Open 0xddy opened this issue 7 years ago • 13 comments

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-

0xddy avatar Mar 19 '17 07:03 0xddy

@dingyong666 请问你的手机型号和系统版本是?

qichuan avatar Mar 19 '17 15:03 qichuan

@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);

0xddy avatar Mar 19 '17 15:03 0xddy

请问你使用的是哪个特殊字符?

qichuan avatar Mar 19 '17 15:03 qichuan

@qichuan 特殊字符的问题 是我怀疑的,奇怪的是 比如说 第一次安装app 打开运行 报错了,然后你重新打开然后就不报错了,问题基本出现在第一次 打开的时候,我现在去打印一下 翻译到哪个字符 报错的

0xddy avatar Mar 19 '17 15:03 0xddy

@qichuan 大神能不能来个简单粗暴的办法,直接 捕获这个 异常。。。

0xddy avatar Mar 20 '17 03:03 0xddy

@dingyong666 我找了台6.x的机子也是无法重现问题,你试试减少转换的频率?

qichuan avatar Mar 21 '17 08:03 qichuan

@qichuan 大神能不能 捕获一下这个异常,java 层捕获不了,导致app 崩溃

0xddy avatar Mar 21 '17 08:03 0xddy

A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x34 in tid 28611 (Ft.cn%2FRpit7Ii) @qichuan 像这样的短链会崩溃

wufenglincheng avatar Sep 13 '17 09:09 wufenglincheng

我也遇到了 我曾经也用 try 住它,但是没有用 提示显示为 so 库间的异常

DerayNanchang avatar May 31 '18 08:05 DerayNanchang

同样遇到这个错误,会导致应用FC。 A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xe79188e6a780e2bd in tid 14018 (onPool-worker-2), pid 13209

wenhelinlu avatar Jul 29 '18 02:07 wenhelinlu

我也遇到了,我发现好像是线程问题,我加了个锁在转换那里,就不报错了

yssmile avatar Dec 19 '18 06:12 yssmile

我也遇到了,我发现好像是线程问题,我加了个锁在转换那里,就不报错了

请问怎么加锁?

wenhelinlu avatar Dec 19 '18 06:12 wenhelinlu

我也遇到了,我发现好像是线程问题,我加了个锁在转换那里,就不报错了

请问怎么加锁?

我转换会在主线程和rx线程转换,所以加了
Lock lock = new ReentrantLock();
lock.lock();
target = ChineseConverter.convert();
lock.unlock();

yssmile avatar Dec 21 '18 05:12 yssmile