进程中捕捉 SIGSEGV 之后,状态是否稳定?
朋友提的问题,大致描述一下:
程序是一个编解码软件,其中调用到某些外部不可控的模块进行编码解码工作。其中会出现指针错误导致的 SIGSEGV。问如果在调用环节通过 sigaction 捕捉这个信号然后跳出继续执行,会不会对程序的稳定运行造成?
我的猜想是出现 SIGSEGV 后,当前线程执行状况从一定程度而言是不可确定的,但是没有明显的理论和实际证据可以证明,请各位前辈指教。
[解决办法]
既然是未定义的,那标准对实现没有限制
[解决办法]
12
[解决办法]
你能捕捉到操作系统层的访问限制的signal吗?
如果能捕捉的可以当作异常跳出执行分之
就怕后续分支影响比较大, 你处理不完全还是会导致问题
[解决办法]
SIGSEGV
发生时,已经破坏了当前系统的运行状态,并且没有方法确定这种错误是什么时候发生的.也就没办法来
修正这个状态.
sigaction 捕捉这个信号然后跳出继续执行-----------在不正常的基础上继续工作,程序的结果应该是不可预测的.
再说,SIGSEGV 发生时,甚至可能把你的栈环境给破坏掉.这种情况更没法保证程序的运行结果.
对于这种情况,sigaltstack函数可能会其些作用.