最近在写python,用了email/sqlite3/mysql/poplib/等东东。程序写完后进行压力,发现无端端退出了,把ulimit -c 设置成比较大的数字(在linux下默认是0 ),让它产生core文件。跟踪了N个core文件,都是在malloc/free之类的地方,感觉就是多线程问题,冲乱了内存。但是隔着一个python解析器,难以跟踪,花了两三天时间都没找到问题,郁闷了好久。Python都会coredump?用了python好久的高手都不解。
最后没办法,只能“拆卸”来找问题,依次拆了解析mail部分、pop部分、mysql部分,都照样core,最后拆sqlite3,不core了。python2.5可是自称自带sqlite3的啊!!居然有问题。详细研究后,发现python2.5所谓自带sqlite3,其实只是自带了sqlite3的封装接口,还是需要下载sqlite3.4的包进行安装,然后在python2.5的setup.py中修订sqlite3的路径(如果不是默认路径安装),才会生成_sqlite3.so。而sqlite3在linux下编译默认是不支持多线程安全!在windows下反而默认是支持的。GOD!!! 增加多线程选项:
--enable-threadsafe --enable-cross-thread-connections
目前跑得很稳定,不再出现coredump现象。
惨痛的coredump经历,差点打击了我对python的信心!!
分享到:
相关推荐
在线调试是在程序运行的过程中进行调试,而Coredump分析是在程序异常退出后,通过分析Coredump文件了解程序崩溃时的状态,以确定崩溃的原因。 在线调试是开发者在程序运行时进行调试的过程,可以实时查看程序的运行...
在Windows操作系统上,生成Coredump文件对于调试和分析C++程序崩溃原因至关重要。Coredump文件包含了程序崩溃时内存中的关键信息,如进程的内存映射、全局变量、堆栈信息等,使得开发者能够定位到问题的具体位置,...
Linux Core Dump 分析方法实例介绍 本文将通过实例来介绍 Linux 中如何进行 Core Dump 分析,解决死机问题。 一、Core Dump 介绍 Core Dump 是 Linux 系统中一种特殊的文件,它记录了系统崩溃或死机时的系统状态...
### Linux下生成Core Dump详解 #### 一、Core Dump简介 在Linux环境下,当一个程序因为某种原因(如段错误)而崩溃时,系统可以自动为该程序创建一个名为“core dump”的文件。这个文件包含了程序崩溃时内存的快照...
coredump 文件的生成与解析 coredump 文件是 Linux 操作系统中的一个重要概念,它记录了程序崩溃时的内存状态和寄存器信息,为程序崩溃后的调试和分析提供了重要的依据。本文将详细介绍 coredump 文件的生成和解析...
标题《Coredump简介及使用》和描述《Android Coredump简介及使用_v1.0_***.pdf》揭示了文档主要介绍Coredump的基本概念、产生的原因、控制产生Coredump的方法以及如何使用Coredump文件。Coredump机制广泛存在于多个...
在IT行业中,Core Dump是一种非常重要的调试手段,它记录了程序在崩溃时内存的状态,包括进程的寄存器信息、堆栈轨迹以及内存映射等。对于开发者来说,利用Core Dump进行问题排查能够帮助我们快速定位和修复软件中的...
Linux Core Dump 权威书籍
Core Dump 文件调试 Core Dump 文件调试是指使用 GDB 调试 Core Dump 文件的过程。Core Dump 文件是操作系统执行的一个动作,当某个进程因为一些原因意外终止(crash)的时候,操作系统会将这个进程当时的内存信息...
在Linux系统中,当应用程序因某种异常而崩溃时,系统可能会生成一个名为"core dump"的文件,这个文件记录了程序崩溃时的内存状态、进程信息以及调用堆栈等重要数据,对于开发者来说,是排查问题的重要工具。...
如何在让docker中运行的进程生成core dump文件
### Ubuntu Linux 下程序崩溃生成 Core Dump 的方法 #### 一、Linux 下 Core Dump 文件 **Core Dump 文件** 是一种在程序崩溃时由操作系统自动生成的文件,它包含了程序崩溃时刻的内存快照以及相关的系统信息。这...
AIX 下的 core dump 分析入门.mht,html文档,请大家参考以下
在Linux系统中,调试是解决程序异常和错误的关键步骤,特别是在遇到程序崩溃并产生coredump时。coredump是操作系统在程序异常终止时保存的内存映像,包含了程序运行时的状态,如内存布局、堆栈信息、全局变量和...
在IT领域,`coredump`(核心转储)是一种记录程序崩溃时内存状态的文件,它包含了进程在异常发生时的内存映像、寄存器值以及调用堆栈等关键信息。`栈分析`是coredump分析的重要部分,通过分析栈信息,我们可以定位到...
本篇文章将围绕`coredump`分析进行入门讲解,结合实例深入探讨如何利用`coredump`来解决实际问题。 首先,我们要理解什么是`coredump`。当一个运行在Linux上的应用程序因为某种原因异常终止(如段错误、除零错误等...
在Linux系统中,当应用程序遇到不可恢复的错误时,如段错误(Segmentation fault),系统会生成一个核心转储文件(core dump)。这个文件包含了进程崩溃时刻的内存映像、寄存器状态以及堆栈信息,是分析和调试程序...
coredump栈分析介绍 coredump stack frame-pointer 栈分析 coredump stack frame-pointer 栈分析 coredump stack frame-pointer 栈分析,初学者可参考
海思busybox+coredump