armbianのインストールで盛大にはまる - 隠居日録の11月6日の追記にも書いたが、kernelのページング問題が結局解決できなかった。こんな感じでsyslogにエラーが吐き出される。
Nov 13 16:10:23 localhost kernel: [ 34.896785] Unable to handle kernel paging request at virtual address 20f2080020f208 Nov 13 16:10:23 localhost kernel: [ 34.904787] Mem abort info: Nov 13 16:10:23 localhost kernel: [ 34.907704] Exception class = DABT (current EL), IL = 32 bits Nov 13 16:10:23 localhost kernel: [ 34.913688] SET = 0, FnV = 0 Nov 13 16:10:23 localhost kernel: [ 34.916781] EA = 0, S1PTW = 0 Nov 13 16:10:23 localhost kernel: [ 34.919958] Data abort info: Nov 13 16:10:23 localhost kernel: [ 34.922881] ISV = 0, ISS = 0x00000004 Nov 13 16:10:23 localhost kernel: [ 34.926758] CM = 0, WnR = 0 Nov 13 16:10:23 localhost kernel: [ 34.929767] [0020f2080020f208] address between user and kernel address ranges Nov 13 16:10:23 localhost kernel: [ 34.936957] Internal error: Oops: 96000004 [#1] SMP Nov 13 16:10:23 localhost kernel: [ 34.941856] Modules linked in: sun4i_gpadc_iio iio_hwmon industrialio uas sunxi musb_hdrc [last unloaded: snd_timer] Nov 13 16:10:23 localhost kernel: [ 34.952436] CPU: 2 PID: 871 Comm: tinyproxy Not tainted 4.14.78-sunxi64 #416 Nov 13 16:10:23 localhost kernel: [ 34.959492] Hardware name: FriendlyARM NanoPi NEO 2 (DT) Nov 13 16:10:23 localhost kernel: [ 34.964817] task: ffff800036a98d00 task.stack: ffff00000a0e8000 Nov 13 16:10:23 localhost kernel: [ 34.970768] PC is at skb_release_data+0xc8/0x158 Nov 13 16:10:23 localhost kernel: [ 34.975406] LR is at skb_release_all+0x24/0x30 Nov 13 16:10:23 localhost kernel: [ 34.979862] pc : [<ffff000008803bb0>] lr : [<ffff000008802fc4>] pstate: 40000145 Nov 13 16:10:23 localhost kernel: [ 34.987266] sp : ffff00000a0ebb50 Nov 13 16:10:23 localhost kernel: [ 34.990589] x29: ffff00000a0ebb50 x28: ffff8000359aa000 Nov 13 16:10:23 localhost kernel: [ 34.995918] x27: ffff800034bd6900 x26: ffff8000359aa0c8 Nov 13 16:10:23 localhost kernel: [ 35.001248] x25: 0000000000000000 x24: 00000000000004bb Nov 13 16:10:23 localhost kernel: [ 35.006578] x23: 0000000000000001 x22: ffff8000359aa51c Nov 13 16:10:23 localhost kernel: [ 35.011914] x21: ffff800034bd6900 x20: ffff800029888d00 Nov 13 16:10:23 localhost kernel: [ 35.017248] x19: 0000000000000000 x18: 0000000000000000 Nov 13 16:10:23 localhost kernel: [ 35.022611] x17: 0000ffffb0a1fd80 x16: ffff0000081f6a18 Nov 13 16:10:23 localhost kernel: [ 35.027982] x15: 000004c01ac4da60 x14: 588cfd0b2f8b2bb5 Nov 13 16:10:23 localhost kernel: [ 35.033322] x13: d5d6dad28e347e88 x12: 9f236569c15bb044 Nov 13 16:10:23 localhost kernel: [ 35.038652] x11: f81be145f8ba51df x10: 0000000000000263 Nov 13 16:10:23 localhost kernel: [ 35.043982] x9 : 2fda4fb583a7da69 x8 : e3d7beb187cce6a6 Nov 13 16:10:23 localhost kernel: [ 35.049313] x7 : f8d177f7ea163fe0 x6 : 0000000009155c3e Nov 13 16:10:23 localhost kernel: [ 35.054677] x5 : 00ffffffffffffff x4 : ffff8000359aa0e0 Nov 13 16:10:23 localhost kernel: [ 35.060048] x3 : 0000000000004280 x2 : 0000000000000700 Nov 13 16:10:23 localhost kernel: [ 35.065419] x1 : 0000000000000020 x0 : 0020f2080020f208 Nov 13 16:10:23 localhost kernel: [ 35.070799] Process tinyproxy (pid: 871, stack limit = 0xffff00000a0e8000) Nov 13 16:10:23 localhost kernel: [ 35.077712] Call trace: Nov 13 16:10:23 localhost kernel: [ 35.080221] Exception stack(0xffff00000a0eba10 to 0xffff00000a0ebb50) Nov 13 16:10:23 localhost kernel: [ 35.086717] ba00: 0020f2080020f208 0000000000000020 Nov 13 16:10:23 localhost kernel: [ 35.094608] ba20: 0000000000000700 0000000000004280 ffff8000359aa0e0 00ffffffffffffff Nov 13 16:10:23 localhost kernel: [ 35.102463] ba40: 0000000009155c3e f8d177f7ea163fe0 e3d7beb187cce6a6 2fda4fb583a7da69 Nov 13 16:10:23 localhost kernel: [ 35.110353] ba60: 0000000000000263 f81be145f8ba51df 9f236569c15bb044 d5d6dad28e347e88 Nov 13 16:10:23 localhost kernel: [ 35.118241] ba80: 588cfd0b2f8b2bb5 000004c01ac4da60 ffff0000081f6a18 0000ffffb0a1fd80 Nov 13 16:10:23 localhost kernel: [ 35.126141] baa0: 0000000000000000 0000000000000000 ffff800029888d00 ffff800034bd6900 Nov 13 16:10:23 localhost kernel: [ 35.134035] bac0: ffff8000359aa51c 0000000000000001 00000000000004bb 0000000000000000 Nov 13 16:10:23 localhost kernel: [ 35.141929] bae0: ffff8000359aa0c8 ffff800034bd6900 ffff8000359aa000 ffff00000a0ebb50 Nov 13 16:10:23 localhost kernel: [ 35.149832] bb00: ffff000008802fc4 ffff00000a0ebb50 ffff000008803bb0 0000000040000145 Nov 13 16:10:23 localhost kernel: [ 35.157721] bb20: ffff80003471bc00 ffff800034bd6900 0000ffffffffffff ffff000008801cf4 Nov 13 16:10:23 localhost kernel: [ 35.165615] bb40: ffff00000a0ebb50 ffff000008803bb0 Nov 13 16:10:23 localhost kernel: [ 35.170559] [<ffff000008803bb0>] skb_release_data+0xc8/0x158 Nov 13 16:10:23 localhost kernel: [ 35.176296] [<ffff000008802fc4>] skb_release_all+0x24/0x30 Nov 13 16:10:23 localhost kernel: [ 35.181843] [<ffff000008802fe4>] __kfree_skb+0x14/0x28 Nov 13 16:10:23 localhost kernel: [ 35.187048] [<ffff0000088788a0>] tcp_recvmsg+0x630/0x810 Nov 13 16:10:23 localhost kernel: [ 35.192390] [<ffff0000088a3d94>] inet_recvmsg+0x4c/0xe8 Nov 13 16:10:23 localhost kernel: [ 35.197692] [<ffff0000087f6d90>] sock_recvmsg+0x48/0x58 Nov 13 16:10:23 localhost kernel: [ 35.202985] [<ffff0000087f6e28>] sock_read_iter+0x88/0xd0 Nov 13 16:10:23 localhost kernel: [ 35.208448] [<ffff0000081f3ec4>] new_sync_read+0xbc/0x108 Nov 13 16:10:23 localhost kernel: [ 35.213925] [<ffff0000081f63f4>] __vfs_read+0x2c/0x38 Nov 13 16:10:23 localhost kernel: [ 35.219041] [<ffff0000081f6490>] vfs_read+0x90/0x168 Nov 13 16:10:23 localhost kernel: [ 35.224072] [<ffff0000081f6a78>] SyS_read+0x60/0xd8 Nov 13 16:10:23 localhost kernel: [ 35.229002] Exception stack(0xffff00000a0ebec0 to 0xffff00000a0ec000) Nov 13 16:10:23 localhost kernel: [ 35.235505] bec0: 0000000000000008 0000aaaadcbe3730 0000000000000800 0000000000000001 Nov 13 16:10:23 localhost kernel: [ 35.243362] bee0: 0000aaaadcbe3730 0000000000000000 0000ffffcdb4b2cc 0000aaaadcbe3f30 Nov 13 16:10:23 localhost kernel: [ 35.251213] bf00: 000000000000003f 003b9aca00000000 000000005bea78df 000000000003ece5 Nov 13 16:10:23 localhost kernel: [ 35.259064] bf20: 0000000000000018 00000003e8000000 000f50a1178acb56 000004c01ac4da60 Nov 13 16:10:23 localhost kernel: [ 35.266914] bf40: 0000000000000000 0000ffffb0a1fd80 0000000000000000 0000aaaadcbe2ff0 Nov 13 16:10:23 localhost kernel: [ 35.274799] bf60: 0000000000000000 0000000000000008 0000aaaadcbe3730 0000aaaaabb71000 Nov 13 16:10:23 localhost kernel: [ 35.282651] bf80: 0000ffffcdb4b498 0000000000000001 0000000000000007 0000000000000008 Nov 13 16:10:23 localhost kernel: [ 35.290502] bfa0: 0000ffffcdb4b528 0000ffffcdb4b3c0 0000aaaaabb54130 0000ffffcdb4b3c0 Nov 13 16:10:23 localhost kernel: [ 35.298352] bfc0: 0000ffffb0a1fd68 0000000060000000 0000000000000008 000000000000003f Nov 13 16:10:23 localhost kernel: [ 35.306202] bfe0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 Nov 13 16:10:23 localhost kernel: [ 35.314063] [<ffff000008083318>] __sys_trace_return+0x0/0x4 Nov 13 16:10:23 localhost kernel: [ 35.319661] Code: 6b13003f 54fffdcc f9400680 b40000a0 (f9400013) Nov 13 16:10:23 localhost kernel: [ 35.325774] ---[ end trace 59dd9cbe42058e9b ]---
今実験のためにPCのブラウザでNanoPi NEO2上のtinyproxyを使うように設定している。たまに、DNSであるunboundがエラーになることもあるが、だいたいtinyproxyがエラーになる。あと、aptitudeでパッケージをインストールしようとしたときにも発生した。いろいろ設定を見直してみたり、変更したのだが、どうやってもこの問題が解決できなかった。ネットで検索しても同様の問題は見当たらないので、使っているボードの問題だろうかと思い、秋月で別なNanoPi NEO2を購入して試してみたが、そちらでも問題は発生するので、ボードの問題ではないと思う。
エラーが発生するのは必ずイーサでパケットを受信したときなので、そのあたりに何か問題があると思われる。実際ffmpegのコンパイルでは落ちなかったし、stressコマンドで負荷をかけても、それでエラーは発生しなかったので、イーサに関係する問題だろうと想像しているのだが、さっぱり見当がつかない。これが一週間に一度ぐらいならまだしも、一時間もあればこの問題は発生するので、実稼働させるのには程遠いレベルだ。それにしても、検索しても、同様の問題が見当たらないのは本当に不思議だ。smbでも、大きなファイルを書き込めば問題が発生するような気がするが、まだ試していない。
2018/11/19追記
昨日ふと思いついて、NanoPi neo2のイーサの接続先を100BASEのハブにしてみたら、すこぶる快適になった。そこで、ethtoolで接続の設定を変えて100Mで接続するようにして、1000BASEのルータのハブに接続してみたのだが、それだとやはり問題が発生する。なので、物理層の問題なのだろうと妄想している。
Nov 18 07:52:21 localhost kernel: [ 736.711107] dwmac-sun8i 1c30000.ethernet eth0: len 1667 larger than size (1536) Nov 18 07:52:21 localhost kernel: [ 736.720572] dwmac-sun8i 1c30000.ethernet eth0: len 1667 larger than size (1536) Nov 18 07:52:23 localhost kernel: [ 738.526400] TCP: eth0: Driver has suspect GRO implementation, TCP performance may be compromised.
のような出力はきっとデータが化けているのだろう。どちらもパケットのサイズが予想より大きいと表示されるようだから。きっと盛大にデータ化けが発生して、つじつまが合わなくなってメモリのアクセスに問題が発生しているか、メモリ上のデータが破壊されているのではなかろうか?
とりあえず回避策は見つかったものの、何とも釈然としない。