mysql: __lll_mutex_lock_wait出現的分析

G8bao7發表於2014-11-18

from:http://blog.csdn.net/dyoldfish/article/details/1752706

1、如果出現__lll_mutex_lock_wait,程式僵死這是毫無疑問。
2、1如果出現:
 __lll_mutex_lock_wait () from /lib/tls/libc.so.6
     並且出現_L_mutex_lock_2507 
   基本上是處於記憶體錯誤(因為記憶體釋放的時候也會呼叫pthread_mutex_lock),這種情況比較好查,用valgrint檢測一下就ok了。

2、2 如果出現:
       __lll_mutex_lock_wait () from /lib/tls/libpthread.so.0
 並且出現 L_mutex_lock_35 ()
   可能是出現死鎖的情況。
   也可能是boost的編譯連結過程中沒用到 -pthread 選項,而是用了-lpthread選項可能出現這種情況。
   或者boost的單執行緒版本和多執行緒版本使用錯誤。


解決方案:

    大部分的情況下是死鎖。而記憶體錯誤的機率很小。

    1、記憶體錯誤。

              用valgrind檢測程式的記憶體,(valgrind可以檢測各種記憶體問題,如記憶體洩漏,記憶體越界等)
   2、死鎖。

          2.1)用-g選項編譯程式。

         2.1)用【pstack   】 命令就可以看到當前程式執行的堆疊,從而看出程式死鎖在哪行程式碼。再接下來把程式碼改了,就完了

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26250550/viewspace-1337957/,如需轉載,請註明出處,否則將追究法律責任。

相關文章