virtualenv 内で作業しているときに断続的に発生する非常に不可解なエラーに遭遇しています。
これまでに 3 ~ 4 回発生しましたが、問題を再現する条件を見つけるのが非常に難しいと感じています。まったく異なるコードを実行しているときに発生し、エラーを発生させた同じコードがエラーの前後に何度も問題なく実行された可能性があります。したがって、どのライブラリが問題を引き起こしているかを体系的に絞り込むことは現時点では現実的ではありません。そのため、私の説明があいまいまたは不完全に思われる場合は、あらかじめお詫び申し上げます。
症状
IPython セッション中に、再配置エラーが発生することがあり、その結果、Unicode 意味不明な内容が端末にダンプされます。問題が最後に発生したときの端末出力を次に示します。
In [435]: figs = clustering.make_plots(d[~d.dark_reared], which='dcentre_dangle')
Sliding median, window=10.00, 10116 x-values
--> Completed: 00:05.17
[Parallel(n_jobs=-1)]: Done 1 jobs | elapsed: 4.8s
[Parallel(n_jobs=-1)]: Done 3 out of 8 | elapsed: 4.9s remaining: 8.1s
[Parallel(n_jobs=-1)]: Done 8 out of 8 | elapsed: 5.3s finished
/home/alistair/.venvs/rfmap/bin/python/home/alistair/.venvs/rfmap/bin/python: relocation error: /home/alistair/.venvs/rfmap/bin/python: symbol Øv�l��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�é����▒└X⎽�▮���\������┴��6�⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�F��ޚ��7�┴�┌�
�⎼R�A?B�!���≤�├_←▮�┐O��°e�ǐ�┤!�=�'!F─┤�
<b3±_�┴����⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�é����▒└X⎽�▮���\������┴��6�⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�F��ޚ��7�┴�┌��⎼R�A?B�!���≤�├_←▮�┐O��°e�ǐ�┤!�=�'!F─┤�
<b3±_�┴����⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�é����▒└
X⎽�▮���\������┴��6�⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�F��ޚ��7�┴�┌��⎼R�A?B�!���≤�├_←▮�┐O��°e�ǐ�┤!�=�'!F─┤�
...そして、このように数ページ続きます。この場合、エラーによって IPython セッションが実際に強制終了されることはありませんでしたが、プロンプトは完全に台無しになりました。
I┼ [436]: ⎼e┌⎺▒d(c┌┤⎽├e⎼☃┼±)
おそらくエラーメッセージとともに、制御文字を含むバイナリデータが端末にダンプされたに違いないため、すべて意味不明です。
同じ virtualenv 内から Python を起動しようとするたびに、同様の再配置エラーが表示されます。
(rfmap)alistair@MAGICPAVINGSLAB:~/src/python/rfmap_pipeline⟫ python
python: relocation error: python: symbol v�l��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�é����▒└X⎽�▮���\������┴��6�⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�F��ޚ��7�┴�┌��⎼R�A?B�!���≤�├_←▮�┐O��°e�ǐ�┤!�=�'!F─┤�
<b3±_�┴����⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�Ø┴�┌��⎼�2≥��^Y�(߰⎻≠─�3�C�*��P≤U┼☃c⎺deUCS4_T⎼▒┼⎽┌▒├eC▒▒⎼└▒⎻← ┴e⎼⎽☃⎺┼ GLIBC_2↓2↓5 ┼⎺├ de°☃┼ed ☃┼ °☃┌e ┌☃bc↓⎽⎺↓6 ┬☃├▒ ┌☃┼┐ ├☃└e ⎼e°e⎼e┼ce
(⎼°└▒⎻)127 ▒┌☃⎽├▒☃⎼@MAGICPAVINGSLAB:·/⎽⎼c/⎻≤├▒⎺┼/⎼°└▒⎻_⎻☃⎻e┌☃┼e⟫
この virtualenv を無効にするか、別の virtualenv に切り替えると、Python は正しく動作します。
回復
これが発生した最初の数回は、virtualenv を削除して、最初から再構築しました。最終的に、試行錯誤の末、壊れた仮想環境を再初期化することで回復できることを発見しました。つまり、
~$ virtualenv $VIRTUAL_ENV
これにより、 に新しい Python バイナリが作成されます (および と$VIRTUAL_ENV/bin
の新しいコピーが提供されます)。pip
setuptools
考えられる原因?
virtualenv を再初期化することで問題が解決したという事実により、Python バイナリ自体が何らかの形で破損していると考えるようになりました。正常なコピーと破損したコピーのファイル サイズに違いは見られませんが、MD5 ハッシュは実際に異なります。
他の誰かが以前にこの種のエラーに遭遇したことがありますか? Python バイナリが破損する原因は何ですか? それ以外の点では、問題のマシンは完全に安定しています。メモリまたはディスクのエラーを疑う理由はなく、システム ログにも疑わしいものは見つかりません。
関連する可能性のあるバージョンの詳細を次に示します。
- Ubuntu 15.04 (3.19.0-21-ジェネリック)
- パイソン2.7.9
- virtualenv 1.11.6
- virtualenvwrapper 4.3.1
アップデート:
破損したバイナリ ファイルと破損していないバイナリ ファイルの比較を試みたところ、繰り返しパターンによって上書きされた 0xD000 と 0xDFF0 の間のバイト ブロックが見つかりました。
作業コピー:
0000 CFC0: 65 74 67 72 6E 61 6D 00 67 65 74 67 72 67 69 64 etgrnam. getgrgid
0000 CFD0: 00 66 73 79 6E 63 00 67 65 74 68 6F 73 74 62 79 .fsync.g ethostby
0000 CFE0: 61 64 64 72 5F 72 00 5F 5F 68 5F 65 72 72 6E 6F addr_r._ _h_errno
0000 CFF0: 5F 6C 6F 63 61 74 69 6F 6E 00 68 73 74 72 65 72 _locatio n.hstrer
0000 D000: 72 6F 72 00 67 65 74 68 6F 73 74 6E 61 6D 65 00 ror.geth ostname.
0000 D010: 67 65 74 70 77 6E 61 6D 00 73 65 74 75 69 64 00 getpwnam .setuid.
0000 D020: 75 74 69 6D 65 73 00 75 74 69 6D 65 00 73 79 73 utimes.u time.sys
0000 D030: 74 65 6D 00 73 74 72 63 6F 6C 6C 00 77 63 73 63 tem.strc oll.wcsc
0000 D040: 6F 6C 6C 00 61 73 63 74 69 6D 65 00 73 6F 63 6B oll.asct ime.sock
0000 D050: 65 74 70 61 69 72 00 61 63 63 65 73 73 00 74 65 etpair.a ccess.te
0000 D060: 6D 70 6E 61 6D 00 74 6D 70 66 69 6C 65 36 34 00 mpnam.tm pfile64.
0000 D070: 74 6D 70 6E 61 6D 5F 72 00 66 63 68 64 69 72 00 tmpnam_r .fchdir.
0000 D080: 66 63 68 6D 6F 64 00 66 63 68 6F 77 6E 00 66 64 fchmod.f chown.fd
0000 D090: 61 74 61 73 79 6E 63 00 66 70 61 74 68 63 6F 6E atasync. fpathcon
0000 D0A0: 66 00 66 73 74 61 74 76 66 73 36 34 00 74 63 67 f.fstatv fs64.tcg
0000 D0B0: 65 74 70 67 72 70 00 74 63 73 65 74 70 67 72 70 etpgrp.t csetpgrp
0000 D0C0: 00 74 74 79 6E 61 6D 65 00 73 65 74 65 67 69 64 .ttyname .setegid
0000 D0D0: 00 73 65 74 65 75 69 64 00 73 65 74 67 69 64 00 .seteuid .setgid.
0000 D0E0: 63 74 65 72 6D 69 64 00 67 65 74 6C 6F 61 64 61 ctermid. getloada
0000 D0F0: 76 67 00 67 65 74 67 72 6F 75 70 73 00 67 65 74 vg.getgr oups.get
0000 D100: 70 70 69 64 00 63 6F 6E 66 73 74 72 00 67 65 74 ppid.con fstr.get
0000 D110: 72 65 73 67 69 64 00 67 65 74 72 65 73 75 69 64 resgid.g etresuid
0000 D120: 00 69 6E 69 74 67 72 6F 75 70 73 00 67 65 74 70 .initgro ups.getp
0000 D130: 77 75 69 64 00 6C 63 68 6F 77 6E 00 73 65 74 72 wuid.lch own.setr
0000 D140: 65 73 67 69 64 00 73 65 74 72 65 73 75 69 64 00 esgid.se tresuid.
0000 D150: 61 6C 61 72 6D 00 73 65 74 70 77 65 6E 74 00 67 alarm.se tpwent.g
0000 D160: 65 74 70 77 65 6E 74 00 65 6E 64 70 77 65 6E 74 etpwent. endpwent
...
壊れたコピー:
0000 CFC0: 65 74 67 72 6E 61 6D 00 67 65 74 67 72 67 69 64 etgrnam. getgrgid
0000 CFD0: 00 66 73 79 6E 63 00 67 65 74 68 6F 73 74 62 79 .fsync.g ethostby
0000 CFE0: 61 64 64 72 5F 72 00 5F 5F 68 5F 65 72 72 6E 6F addr_r._ _h_errno
0000 CFF0: 5F 6C 6F 63 61 74 69 6F 6E 00 68 73 74 72 65 72 _locatio n.hstrer
0000 D000: BE 4A A4 0A 2A 17 AE 18 F9 91 B8 BF 27 5A D7 C9 .J..*... ....'Z..
0000 D010: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
0000 D020: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
0000 D030: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
0000 D040: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
0000 D050: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
0000 D060: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
0000 D070: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
0000 D080: A9 F9 A9 BE 8D 68 6D 58 73 1C 16 C2 E3 95 30 B4 .....hmX s.....0.
0000 D090: 95 96 D3 E0 EA 01 5C B7 CC CE 9C 86 AA AB E9 31 ......\. .......1
0000 D0A0: 98 E5 4B E2 CB 76 84 D3 55 BC 36 85 0E 72 A2 C3 ..K..v.. U.6..r..
0000 D0B0: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
0000 D0C0: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
0000 D0D0: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
0000 D0E0: EE C9 C4 46 D9 4F A6 04 D6 CB BF DE 9A 93 B4 37 ...F.O.. .......7
0000 D0F0: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 52 FC ..K..v.. Ul...rR.
0000 D100: CA 59 41 3F 42 94 21 9B 89 80 79 9B 74 D3 1F 5F .YA?B.!. ..y.t.._
0000 D110: 2C 30 AE 6B 1A 4F F7 B3 14 66 65 BE C7 90 BE 75 ,0.k.O.. .fe....u
0000 D120: 21 8D 3D 1C B6 27 E0 49 15 F3 98 35 21 46 E9 AE !.=..'.I ...5!F..
0000 D130: D6 71 75 B4 07 0B 3C 62 33 D2 DE 02 67 5F C3 D3 .qu...<b 3...g_..
0000 D140: 98 E5 4B E2 CB 76 84 D3 2A 93 BB 8D 0E 72 A2 C3 ..K..v.. *....r..
0000 D150: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
0000 D160: 98 E5 4B E2 CB 76 84 D3 55 6C BB 8D 0E 72 A2 C3 ..K..v.. Ul...r..
...
これ以上これを解釈するのに十分な知識はありませんが、場所とパターンが手がかりになるようです.