HI,Everyone;
首先很高兴能阅读到这个优秀的开源项目,我其中的CMySql.cpp的内容用到了我自己的项目中,但在使用过程中,出现了一些意外的情况,很多的时候,它会出现在执行CDBOpertaion::executeSQL时,出现意外的cash,于是我调试过程,把堆栈信息进行了记录:
[New LWP 2023082]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `[vcmu: worker pro'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007f0a47cf911e in ?? () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
(gdb) bt
#0 0x00007f0a47cf911e in ?? () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
#1 0x00007f0a47cf9c6d in my_net_read () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
#2 0x00007f0a47cf305c in cli_safe_read () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
#3 0x00007f0a47cf41e2 in ?? () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
#4 0x00007f0a47cf4f7e in mysql_real_query () from /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
#5 0x000000000043bc6a in PublicTool::CDBOpertaion::executeSQL (this=0x26b3fc0,
sql=0x7f0a3a7fb770 "INSERT INTO ocv_composite_element_relate (composite_id,usr_element_id,usr_element_type,usr_element_path)VALUES(264103,27803,2000,'/data1/storage_proxy/bucket_private_global/dev_ocv/0/02/12/02128de63ce"..., len=228) at ../VCMUnit/src/Public/dbu/CMySql.cpp:315
#6 0x000000000043bc1c in PublicTool::CDBOpertaion::executeSQL (this=0x26b3fc0,
sql=0x7f0a3a7fb770 "INSERT INTO ocv_composite_element_relate (composite_id,usr_element_id,usr_element_type,usr_element_path)VALUES(264103,27803,2000,'/data1/storage_proxy/bucket_private_global/dev_ocv/0/02/12/02128de63ce"...) at ../VCMUnit/src/Public/dbu/CMySql.cpp:308
#7 0x0000000000446a7c in VCMU_Global::CSqlAssemble::ExecuteSQL (
pszSql=0x7f0a3a7fb770 "INSERT INTO ocv_composite_element_relate (composite_id,usr_element_id,usr_element_type,usr_element_path)VALUES(264103,27803,2000,'/data1/storage_proxy/bucket_private_global/dev_ocv/0/02/12/02128de63ce"..., retry_time_max=5) at ../VCMUnit/src/Global/csqlassemble.cpp:239
#8 0x000000000043e77b in TMModule::CVideCompositeTask::InsertDbCompositeElementInfo (this=0x7f0a14007cd0, struTaskInfo=...) at ../VCMUnit/src/TaskManager/cusertask.cpp:290
#9 0x000000000043e33c in TMModule::CVideCompositeTask::CVideCompositeTask (this=0x7f0a14007cd0, struTaskHead=..., struTaskInfo=...) at ../VCMUnit/src/TaskManager/cusertask.cpp:235
#10 0x0000000000441913 in TMModule::CUserTaskDbCb::CreateCompositeTask (this=0x7f0a00002dd0) at ../VCMUnit/src/TaskManager/cusertask.cpp:936
#11 0x00000000004413ad in TMModule::CUserTask::Run (this=0x7f0a00002dd0) at ../VCMUnit/src/TaskManager/cusertask.cpp:845
#12 0x0000000000428fb7 in TMModule::CTaskBase::do_work (this=0x7f0a00002dd0, os=...) at ../VCMUnit/src/TaskManager/ctaskbase.cpp:108
#13 0x0000000000427ad7 in ThreadPool::process (arg=0x26cd210) at ../VCMUnit/src/Public/threadpool/thread_pool.cc:386
#14 0x00007f0a4746f184 in start_thread (arg=0x7f0a3a7fc700) at pthread_create.c:312
#15 0x00007f0a4650cffd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb)
这个情况会很平凡的出现,我在想,这个问题是否是因为多线程安全引起的问题?