linux遇到Caught signal 2 (sent by the kernel) <--问题

本文探讨在使用SDL封装的C++类程序时遇到的问题,特别是与堆栈分配相关的错误,并提供了解决这些问题的方法。主要内容包括指针和数组变量的正确初始化、避免直接定义变量以及在构造函数中使用new方法分配内存的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



^C(!) [  919:    0.000] --> Caught signal 2 (sent by the kernel) <--
Aborted

最近老遇到这个问题,开发板跑SDL封装的c++类程序时,很多时候感觉都是违反常理,现象无法推测的感觉,

不过大体上,我感觉,一般问题主要出在堆栈的分配问题上

1,程序里的指针、数组变量初始化的有问题,构造函数里初始化变量时

2,分配变量尽量用new方法,前面我直接定义变量,变量里的值有时候会随着程序的执行自己改变

new使用举例

int *i_pointer;

i_pointer = new int[20];分配堆内存

delete[] i_pointer;

2025-08-04 11:38:25 Unable to load any of {libcudnn_ops.so.9.1.0, libcudnn_ops.so.9.1, libcudnn_ops.so.9, libcudnn_ops.so} 2025-08-04 11:38:25 Invalid handle. Cannot load symbol cudnnCreateTensorDescriptor 2025-08-04 11:38:25 [fc0737d948e1:1 :0:166] Caught signal 11 (Segmentation fault: Sent by the kernel at address (nil)) 2025-08-04 11:38:25 ==== backtrace (tid: 166) ==== 2025-08-04 11:38:25 0 0x0000000000042520 __sigaction() ???:0 2025-08-04 11:38:25 1 0x0000000000028898 abort() ???:0 2025-08-04 11:38:25 2 0x00000000000060a5 cudnnCreateTensorDescriptor() ???:0 2025-08-04 11:38:25 3 0x0000000000415243 ctranslate2::ops::Conv1D::compute<(ctranslate2::Device)1, half_float::half>() ???:0 2025-08-04 11:38:25 4 0x0000000000289989 ctranslate2::layers::WhisperEncoder::operator()() ???:0 2025-08-04 11:38:25 5 0x00000000002e7309 ctranslate2::models::WhisperReplica::encode() ???:0 2025-08-04 11:38:25 6 0x00000000002e8c6c ctranslate2::ReplicaPool<ctranslate2::models::WhisperReplica>::BatchJob<ctranslate2::StorageView, ctranslate2::ReplicaPool<ctranslate2::models::WhisperReplica>::post_batch<ctranslate2::StorageView, ctranslate2::ReplicaPool<ctranslate2::models::WhisperReplica>::post<ctranslate2::StorageView, ctranslate2::models::Whisper::encode(ctranslate2::StorageView const&, bool)::{lambda(ctranslate2::models::WhisperReplica&)#1}>(ctranslate2::models::Whisper::encode(ctranslate2::StorageView const&, bool)::{lambda(ctranslate2::models::WhisperReplica&)#1})::{lambda(ctranslate2::models::WhisperReplica&)#1}>(ctranslate2::ReplicaPool<ctranslate2::models::WhisperReplica>::post<ctranslate2::StorageView, ctranslate2::models::Whisper::encode(ctranslate2::StorageView const&, bool)::{lambda(ctranslate2::models::WhisperReplica&)#1}>(ctranslate2::models::Whisper::encode(ctranslate2::StorageView const&, bool)::{lambda(ctranslate2::models::WhisperReplica&)#1})::{lambda(ctranslate2::models::WhisperReplica&)#1}, std::vector<std::promise<ctranslate2::StorageView>, std::allocator<std::promise<ctranslate2::StorageView> > >)::{lambda()#1}>::run() whisper.cc:0 2025-08-04 11:38:25 7 0x000000000033e384 ctranslate2::Worker::run() ???:0 2025-08-04 11:38:25 8 0x0000000002f45680 execute_native_thread_routine() thread48.o:0 2025-08-04 11:38:25 9 0x0000000000094ac3 pthread_condattr_setpshared() ???:0 2025-08-04 11:38:25 10 0x0000000000126a40 __xmknodat() ???:0 2025-08-04 11:38:25 =================================
最新发布
08-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值