/lib64/libc.so.6 錯誤導致的系統崩潰


緣由

    我們有個同事要安裝一個軟件,就用yum 安裝,然后就悲劇。安裝完成之后 發現無論執行任何命令都會報錯,如下錯誤

psgrep: relocation error: : /usr/lib64/libpthread.so.0: relocation error: symbol __libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference/usr/lib64/libpthread.so.0: symbol __libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

嚇尿了,遇到這種錯誤就懵逼了,以為系統壞了,這個壞了可不是重做系統就好了(這個服務器是在異地,真要出問題 都要飛過去了)。

    此時最最重要一點是不要關閉當前窗口,不要重新啟動機器! 一旦關閉窗口將無法重新連接(可以自己新建窗口試下),重啟機器后也將無法進入系統 。比較幸運的是 我們當時開了兩個窗口,要不然就麻煩了

原因

  • libc.so.6是C運行時庫 glibc的軟鏈接,程序啟動和運行時,是根據libc.so.6軟鏈接找到glibc庫

  • lib64/libc.so.6是一個軟鏈接,指向/lib64/libc.so-2.1x,2.1x表示其對應版本,去兼容相應CentOS版本

  • 很多基本命命令依賴glibc,libc.so.6鏈接對應版本不一致將導致系統的幾乎所有程序不能工作

解決過程

    由於我們也是第一次遇到,沒撒經驗 那就搜索了,根據相關文章思路 以及通過少的可憐可以執行的命令試錯 大致知道了原因:應該是有人升級了內核,但是升級失敗了,導致服務器存在兩個內核,在執行yum的過程中應該把錯誤的內核指向了 /lib64/libc.so.6 。我們通過 命令發現 /lib64/libc.so-2..xx.so 有兩個版本(tab 命令補全還可以使用),我們參考了其他機器發現都使用2.17 版本 。

    但是我們在 執行  “sln /usr/lib64/libc-2.17.so /usr/lib64/libc.so.6” 過程中 發現 一直提示 一個很奇怪的錯誤,最后我們發現 其實 /lib64/libc-2.17.so 文件其實也是有問題的,幸好我們查找整個服務器備份了一個 2.17 的 so 文件(喜極而泣),然后把 這個 so 替換了 /lib64/libc-2.17.so 。發現軟鏈之后就解決了一些問題。

解決方法

    主要指向如下命令,就可以解決。

sln /usr/lib64/ld-2.17.so /usr/lib64/ld-linux-x86-64.so.2
sln /usr/lib64/libc-2.17.so /usr/lib64/libc.so.6



原文地址: /lib64/libc.so.6 錯誤導致的系統崩潰
標簽: centos    yum   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM