亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 42297 | 回復(fù): 0
打印 上一主題 下一主題

[其他] c調(diào)用lua出現(xiàn)死鎖問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2019-08-23 14:45 |只看該作者 |倒序?yàn)g覽
c程序中使用lua5.3.2庫來實(shí)現(xiàn)程序與lua腳本的調(diào)用,設(shè)計(jì)概要:
1. 多線程調(diào)用lua的接口來實(shí)現(xiàn)對lua腳本的調(diào)用
2. 多線程調(diào)用system實(shí)現(xiàn)其他任務(wù)

這樣做概率性的會出現(xiàn)程序死鎖問題,下面是部分的堆棧信息:

Thread 8 (Thread 0x7f7ae46f0700 (LWP 14392)):
#0  0x00007f7b7ab03d1c in __lll_lock_wait_private () from /lib64/libc.so.6
#1  0x00007f7b7aa7653d in _L_lock_121 () from /lib64/libc.so.6
#2  0x00007f7b7aa74103 in __GI__IO_un_link () from /lib64/libc.so.6
#3  0x00007f7b7aa6611d in fclose@@GLIBC_2.2.5 () from /lib64/libc.so.6
#4  0x000000000046b2db in io_fclose ()
#5  0x000000000045c1dc in luaD_precall ()
#6  0x00000000004665a5 in luaV_execute ()
#7  0x000000000045c59c in luaD_call ()
#8  0x000000000045b75b in luaD_rawrunprotected ()
#9  0x000000000045b7e3 in luaD_pcall ()
#10 0x00000000004595f2 in lua_pcallk ()
#11 0x0000000000429638 in LuaHandler::dataAssemble_ex (this=0x7f7ae46efd40, pDataList=0x7f7a7c03c030, pResult=0x7f7ae46efd00, mapTaskRunResult=std::map with 0 elements, mapUpdateData=std::map with 0 elements, listSendPath=empty std::list, mapTaskHighsPot=std::map with 0 elements) at ../src/LuaHandler.cpp:387
#12 0x0000000000418dc6 in DataAssembler::dataAssemble (this=0x117b770, key="wsms_dns_hijacking_map", pDataList=0x7f7a7c03c030) at ../src/DataAssembler.cpp:323
#13 0x000000000041961b in DataAssembler::executeDataAssemble (this=0x7f7b7adc09e0 <list_all_lock>, strKey=<error reading variable: Cannot access memory at address 0x80>, pDataList=0x7f7ae46f0700) at ../src/DataAssembler.cpp:227
#14 0x00000000004198a1 in DataAssembler::dataAssembleCallBack (data=<optimized out>, user_data=<optimized out>) at ../src/DataAssembler.cpp:239
#15 0x00007f7b7b86fe7c in g_thread_pool_thread_proxy () from /lib64/libglib-2.0.so.0
#16 0x00007f7b7b86f4f5 in g_thread_proxy () from /lib64/libglib-2.0.so.0
#17 0x00007f7b7adccdd5 in start_thread () from /lib64/libpthread.so.0
#18 0x00007f7b7aaf602d in clone () from /lib64/libc.so.6

Thread 4 (Thread 0x7f7ae26ec700 (LWP 14396)):
#0  0x00007f7b7ab03d1c in __lll_lock_wait_private () from /lib64/libc.so.6
#1  0x00007f7b7aa76640 in _L_lock_4452 () from /lib64/libc.so.6
#2  0x00007f7b7aa75a08 in _IO_flush_all_lockp () from /lib64/libc.so.6
#3  0x000000000046ba63 in io_popen ()
#4  0x000000000045c1dc in luaD_precall ()
#5  0x00000000004665a5 in luaV_execute ()
#6  0x000000000045c59c in luaD_call ()
#7  0x000000000045b75b in luaD_rawrunprotected ()
#8  0x000000000045b7e3 in luaD_pcall ()
#9  0x00000000004595f2 in lua_pcallk ()
#10 0x0000000000429252 in LuaHandler::parseConfigure (this=0x7f7ae26ebac0, filename=0x7f7adc09f8c8 "/usr/local/ms-eagle-rcc/conf/wsms/dns_local_domain", spTaskType=...) at ../src/LuaHandler.cpp:85
#11 0x00000000004393dc in TaskConfigure::executeScript (this=<optimized out>, script="/usr/local/ms-eagle-rcc/script/wsms/parseConfigureDns_dns_local_domain.lua", configFilename="/usr/local/ms-eagle-rcc/conf/wsms/dns_local_domain", pLogger=<optimized out>, spTaskType=...) at ../src/TaskConfigure.cpp:105
#12 0x000000000043989b in TaskConfigure::parseConfigure (this=0x11188c0, spTaskType=...) at ../src/TaskConfigure.cpp:75
#13 0x0000000000439e7c in TaskConfigure::parseConfigure (this=0x11188c0, pSchedulerConfig=0x7f7ae26ebca0) at ../src/TaskConfigure.cpp:43
#14 0x0000000000437844 in SchedulerHandler::updateConf (this=0x1118670, schedulerInfo=...) at ../src/SchedulerHandler.cpp:568
#15 0x0000000000437b8e in SchedulerHandler::run (this=0x7f7a50001a00) at ../src/SchedulerHandler.cpp:148
#16 0x00000000004cb9a0 in Poco::ThreadImpl::runnableEntry(void*) ()
#17 0x00007f7b7adccdd5 in start_thread () from /lib64/libpthread.so.0
#18 0x00007f7b7aaf602d in clone () from /lib64/libc.so.6

Thread 181 (Thread 0x7f7b3af9d700 (LWP 14197)):
#0  0x00007f7b7ab03d1c in __lll_lock_wait_private () from /lib64/libc.so.6
#1  0x00007f7b7aa76728 in _L_lock_6097 () from /lib64/libc.so.6
#2  0x00007f7b7aa7647f in __GI__IO_list_lock () from /lib64/libc.so.6
#3  0x00007f7b7aabd087 in fork () from /lib64/libc.so.6
#4  0x000000000044a302 in systemEx (cmdstring=0x7f7ad0009008 "/usr/local/ms-eagle-wstools/bin/wspoll -f /usr/local/ms-eagle-rcc/data/wsms_poll_100k_appa.in -o /usr/local/ms-eagle-rcc/data/wsms_poll_100k_appa.out", timeout=600) at ../src/util/ToolsUtil.cpp:135
#5  0x0000000000412f20 in BatchJobExecutor::runCmd (this=<optimized out>, cmd="/usr/local/ms-eagle-wstools/bin/wspoll -f /usr/local/ms-eagle-rcc/data/wsms_poll_100k_appa.in -o /usr/local/ms-eagle-rcc/data/wsms_poll_100k_appa.out", iTimeout=989452032, pLogger=0xffffffffffffffff) at ../src/BatchJobExecutor.cpp:146
#6  0x0000000000413f1e in BatchJobExecutor::executeTask (this=0x11f1660, spJobInfo=..., spExecutingTask=...) at ../src/BatchJobExecutor.cpp:69
#7  0x0000000000420970 in JobExecutorWrapper::executeBatchTask (this=0x1146800, spJobInfo=..., spExecutingTask=...) at ../src/JobExecutorWrapper.cpp:198
#8  0x0000000000422319 in JobExecutorWrapper::batchTaskCallbackWrapper (data=<optimized out>, user_data=<optimized out>) at ../src/JobExecutorWrapper.cpp:127
#9  0x00007f7b7b86fe7c in g_thread_pool_thread_proxy () from /lib64/libglib-2.0.so.0
#10 0x00007f7b7b86f4f5 in g_thread_proxy () from /lib64/libglib-2.0.so.0
#11 0x00007f7b7adccdd5 in start_thread () from /lib64/libpthread.so.0
#12 0x00007f7b7aaf602d in clone () from /lib64/libc.so.6

經(jīng)過定位,io_popen調(diào)用了l_popen
#define l_popen(L,c,m)                (fflush(NULL), popen(c,m))

問題就在這句 fflush(NULL),這是這個操作導(dǎo)致了死鎖(參考 : https://bugzilla.redhat.com/show_bug.cgi?id=906468

我的修改方案就是直接將 fflush(NULL)這句去掉,這樣做會不會有什么風(fēng)險(xiǎn)?

哪位大神賜教,不勝感激。

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP