Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SIGSEGV(SEGV_MAPERR) #10

Open
BeWaterMF opened this issue Nov 9, 2020 · 9 comments
Open

SIGSEGV(SEGV_MAPERR) #10

BeWaterMF opened this issue Nov 9, 2020 · 9 comments

Comments

@BeWaterMF
Copy link

BeWaterMF commented Nov 9, 2020

版本:1.3.9
image
麻烦看下
额外说明下,我们项目里配置只会把armeabi-v7a的so打进apk,但是我看出现这个crash的设备CPU架构基本都是arm64-v8a。之前版本接的是1.3.8,并没有看到有报这个问题,新版本换到1.3.9发布后,突然报上来100多次crash。

@lixiaoyu0123
Copy link
Contributor

是否存在未初始化完成开始调用的情况? 另外Application中是否存在多进程多次初始化问题?

@lixiaoyu0123
Copy link
Contributor

另外麻烦更新最新版本1.4.2

@BeWaterMF
Copy link
Author

是否存在未初始化完成开始调用的情况? 另外Application中是否存在多进程多次初始化问题?

确定是初始化完成后才开始的调用;虽然APP有多进程,但是我的datareporter初始化方法并不是在Application里调用的,是在一个单例的初始化方法里写的,datareporter的所有方法调用都在这个单例里

@lixiaoyu0123
Copy link
Contributor

单例的初始化是在什么时机进行的?建议Application中的初始化增加非当前进程过滤, 是否调用了DataReporter的release方法,在release方法调用后,是否还存在调用DataReporter其他方法的情况?

@lixiaoyu0123
Copy link
Contributor

最好是更新1.4.2,增加了上面这些边界条件的处理。但是多进程的问题还是要依赖接入方解决。

@BeWaterMF
Copy link
Author

单例的初始化是在什么时机进行的?建议Application中的初始化增加非当前进程过滤, 是否调用了DataReporter的release方法,在release方法调用后,是否还存在调用DataReporter其他方法的情况?

查找了一下,在某些情况下,确实会有多进程都触发到单例初始化的情形,我改下这个地方,不同进程生成不同实例及缓存路径,下个版本再观察下看看还有没有新的上报。另外想咨询两个问题,①是每个进程内都会有一个线程去做轮询吗?②从文档说明看,针对同一个进程,对不同业务生成不同datareporter实例也是可行的,是吧?

@BeWaterMF
Copy link
Author

最好是更新1.4.2,增加了上面这些边界条件的处理。但是多进程的问题还是要依赖接入方解决。

好的,后面找个机会更新下版本。

@lixiaoyu0123
Copy link
Contributor

lixiaoyu0123 commented Nov 16, 2020

①是每个进程内都会有一个线程去做轮询吗?
每个进程都会开单独的线程轮训,等待。
②从文档说明看,针对同一个进程,对不同业务生成不同datareporter实例也是可行的,是吧?
同一个进程,不同业务可以创建不同实例,不同实例公用一个轮训线程。保证多个实例不会增加额外的性能负担。

@BeWaterMF
Copy link
Author

①是每个进程内都会有一个线程去做轮询吗?
每个进程都会开单独的线程轮训,等待。
②从文档说明看,针对同一个进程,对不同业务生成不同datareporter实例也是可行的,是吧?
同一个进程,不同业务可以创建不同实例,不同实例公用一个轮训线程。保证多个实例不会增加额外的性能负担。

公用一个轮询线程,那假如我同一进程两个业务设置的轮询时间不同,是用最小的那个来做轮询时间?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants