Qt 崩溃 corrupted double-linked list Aborted

Posted DreamLife.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 崩溃 corrupted double-linked list Aborted相关的知识,希望对你有一定的参考价值。

文章目录


关键字: QtAbortedcorrupteddoublelinked

摘要

额,结论,没有搞定,最后通过守护进程先糊弄过去,这个项目过了证就扔了,所以目前不准备在修复,这里简单记录下我都尝试了那些东西

corrupted double-linked list Aborted,谷歌翻译的结果就是 双链表损坏。

1 使用全局静态变量

遇到这个问题首先就是要百度,有一个声音说是重复释放了,所以我这里尝试把我函数中所有的局部变量都弄成静态全局变量,这样测试还是没有解决问题。

2 不取第一个和最后一个数

其实到这里,已经开始不自信了,项目中用到了多线程,数据交换用的是vector,线程A 每次都是追加一个数据,删除第一个数据,线程B读取线程A的数据,并进行相关计算,开始我只直觉读取vector的begin 和end 了,后面做了+1 和-1,想的是不是加锁没有成功,导致,最后发现还是会崩溃。

3 将数据计算放到同一线程计算

后面我尝试吧数据的计算都放到一个线程里面,另一个线程只读线程的属性值就可以,但是还是一样的崩溃。

4 替换槽函数

其实这个也不知道有没有实际的作用,我开始是将数据B的读取数据写到了一个定时器的槽函数里面,这样每次定时去读取数据,发现崩溃后,我尝试了定时器发送信号,在线程里面在实现一个槽函数,来读取数据,测试结果还是崩溃

5 修改传值为const

这个理解其实应该是有偏差的了,我开始给函数传vector 的时候,是直接传递的,这里其实应该也是传递了一个指针,发现层亏后,我在将函数参数加了const ,结果还是崩溃

6 神奇的环境因素

我在X86 的机器上挂Debug测试没有测到崩溃的时候,而在真实的Arm板子上跑就会崩溃,这个也是一个搞不定的问题。阿西,

7 更神奇的板子差异

板子是同一个板子,只是系统稍微有点差别,在家里好歹可以撑到40分钟,甚至更长的几小时,在现场基本就是30分钟内必然崩溃,而我板子试试安装的库可能更多一点,按道理,没啥差别,都是厂家自带的系统。

8 另一个细节Aborted

这里我感觉,我的程序不是自己运行崩溃了,而是被系统给kill了。所以问题出在哪里呢。

最后

到这里,我也没有彻底解决这个问题,所以我准备重写了。

参考资料

https://bbs.csdn.net/topics/392140813?list=lz

https://stackoverflow.com/questions/18035080/malloc-crashes-saying-corrupted-double-linked-list

https://www.cnpython.com/qa/1324332

https://www.coder.work/article/112395

https://www.zhangshilong.cn/work/172885.html

https://blog.csdn.net/weixin_39094034/article/details/110225908

https://blog.csdn.net/liuzehn/article/details/80830279

https://cloud.tencent.com/developer/article/2054858

https://www.dovov.com/sigabrt6.html


以上是关于Qt 崩溃 corrupted double-linked list Aborted的主要内容,如果未能解决你的问题,请参考以下文章

mycat偶尔会出现JVM报错double free or corruption并崩溃退出

ORACLE 使用"_ALLOW_RESETLOGS_CORRUPTION"进行崩溃恢复

mysql数据库崩溃:InnoDB: Database page corruption on disk or a failed

解决Unity的 The file 'MemoryStream' is corrupted! Remove it and launch 崩溃问题

ORA-01578 data block corrupted 数据文件损坏 与 修复 (多为借鉴 linux)

QT QsciScintilla 崩溃