Bug! Bug? Ghost….

這幾天我睡的很糟, 半夜把我弄起來總是要有點理由的.

在說故事之前, 要先說的是, 人太自信真的不是什麼好事情.

當我確定已經把正確的資料從ibdata一堆雜亂中倒回InnoDB後, 我下了幾個帶Join的Query就放心了, 這下資料沒問題了. 所以就把Rmail跟imapd都重新compile回去拿掉debug flags, 重起後沒有全面測試一次就很久信心的離開, 準備好好的睡了.

睡到一半我被一連串的MSN Alert叫醒. imapd session掛點了.

當我看到以下的Log時幾乎快崩潰了: 不是吧, 我才闔上眼沒幾個小時又掛了?


May 8 15:03:22 ms01 dovecot: [ID 107833 mail.error] auth-worker(default): mysql: Connect failed to xxx.xxx.xxx.xxx (rmail): Ac
cess denied for user 'rmail'@'xxx.xxx.xxx.xxx' (using password: YES) - waiting for 5 seconds before retry

但是奇怪的, mysql CLI可以連, 除了imapd之外其他東西也都運作正常, 我懷疑是不是網路斷線? 不管怎麼重新啟動imapd都是一樣的結果. 從Server開log去看也只是兩種差別


060508 20:19:53 1 Connect rmail@xxx.xxx.xxx.xxx on rmail
060509 3:00:23 3 Connect Access denied for user 'rmail'@'xxx.xxx.xxx.xxx' (using password: YES)

同一個config file, 同一個make opt, 同樣一套mysql.h, 同樣一份libmysqlclient.so.14, 為什麼偏偏就是有些東西連不上, 有些東西連的上? 而且連不上的還是Access Denied!

我用盡所有想的到的手段, 詳細也就不說了, 包含拿client/server都用debug version去倒資料出來, 明明送出相同的東西, 卻有不同的結果; Server明明收到相同的東西, 卻有不同的反應. 我終於理性崩潰, 決定用最低階的方式去抓, 拿tcpdump倒出來看.

竟然不同!!

同一個 mysql_real_connect, 我甚至最後為它寫了一個shared lib去測試, 參數一模一樣, 我最後乾脆寫死在header file裡頭….竟然tcpdump下去, 才發現傳的東西不同.

我到如今還想不出來為什麼, 但是我卻聽從了 http://bugs.mysql.com/bug.php?id=13944的建議用OLD_PASSWORD解掉這個問題了. 這根本不叫bug, 這叫做ghost.

還我的睡眠來.

Comments
  • jeffhung 9 5 月, 2006 at 06:14

    搞程式總是會碰上鳥事。

    有碰過那種混用 Debug/Release 版早成的鳥事嗎?某 DLL A 需要 App 做 setlocale() 設定 locale,正確設定之後,進 DLL 要用時卻發現 locale 沒變還是預設的 “C”。原來是因為 Release 版的 DLL 看到的 locale,跟 Debug 版的 App 設定的,是「不同的一套」。

    有沒有這麼白爛的 library 啊?

  • […] 寫這麼久的程式, 做這麼久的系統, 還是會碰到一些鳥事情. 之前這個libmysqlclient.so.14的天才問題已經扯斷一次我的理性了, 這次碰到的問題又再度挑戰我的極限. […]

  • Post a comment

    Threaded commenting powered by interconnect/it code.