-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
GetLogLen crash求助 #456
Comments
能看到用户的存储使用情况吗?SIGBUS 和 mmap 有关的一般是越界访问了 mmap 的空间,之前有过类似的,是空间不够用了。 但是 xlog 会提前占位空间的。分析分析用户的共性吧 |
终于看到一个有用的日志,大致是getloglen的同时由于另一个线程调用了exit,使得全局对象mmap_file被析构了,因此getloglen调用的mmapfile是closed了(析构函数中调用了close)的。想问一下,因为sg_cond_buffer_async已经有做过相关的处理,mmapfile为什么不做处理呢?是未考虑到还是有其他原因?(求回复。。。) |
mmapfile为什么不做处理呢?指的哪方面的处理 |
全局对象改成全局引用,防止exit时对象析构的不可控 |
sg_cond_buffer_async 也只在 windows 上这么做了,因为在 windows 上能稳定重现这个问题。 你这个问题的解决办法 不妨尝试下 atexit 注册下 appenderClose |
xlog在appender_open中是已经注册了appender_close的了吧,这应该是多线程相关的问题,见线程14和23,线程14调用了appender_close,线程23同时析构了mmap_file对象,导致了appender_close及线程1中getloglen的mmap_file指针为空, Thread 1 Crashed: Thread 2 name: com.apple.uikit.eventfetch-thread Thread 3: Thread 4: Thread 5: Thread 6: Thread 7: Thread 8: Thread 9 name: com.apple.CFSocket.private Thread 10 name: com.apple.CoreMotion.MotionThread Thread 11: Thread 12: Thread 13: Thread 14: Thread 15: Thread 16: Thread 17: Thread 18: Thread 19: Thread 20: Thread 21: Thread 22: Thread 23: |
嗯 多线程问题,你可以在你那里改成引用,然后灰度看看数据会不会变好,如果变好提个 pr 过来。因为目前微信是没这种类型的crash 的,我们是hook 了 exit 代码,在 exit 中释放各种资源,然后再调用系统的 exit |
公司的几个项目都用了xlog打日志,每天都会出现少量的崩溃(参见以下崩溃信息),类似#204的问题,如果#204的问题是sdcard读写问题的话,iOS应该不会有这种情况发生吧。
目前本地复现不出crash,苦苦分析不出问题,只能来这里求助了。
(崩溃信息,与业务逻辑相关的信息已屏蔽,望谅解~)
The text was updated successfully, but these errors were encountered: