Bis hierher alles OK. Keine SCSI-Fehler mehr! *yeah* Dann ein Crash. "local", ein Deliveryprozess von Postfix, macht einen lstat(). Freundlicherweise gibt es genau einen lstat in local - siehe postfix-2.0.6/src/local/dotforward.c: /* * Search the forward_path for an existing forward file. * * If unmatched extensions should never be propagated, or if a forward file * name includes the address extension, don't propagate the extension to * the recipient addresses. */ ... if ((expand_status & (MAC_PARSE_ERROR | MAC_PARSE_UNDEF)) == 0) { lookup_status = lstat_as(STR(path), &st, usr_attr.uid, usr_attr.gid); if (msg_verbose) ... Wir koennen also davon ausgehen, dass der lstat() irgendwo in einem NFS-Mountpoint passiert. Es ist leider nicht moeglich, herauszufinden, WER zu diesem Zeitpunkt eine Mail zugestellt bekommen sollte. Zu viele Mails waren da in der Queue. Alle .forward sind "normale" Files. In den diversen Kernelroutinen, die da zu Zug kommen, kommt es zu read_cache_page aus mm/filemap.c. Der ueberprueft, ob die Page bereits im Cache liegt und loest einen Transfer aus, falls dies nicht der Fall ist. Der Code von read_cache_page sieht an und fuer sich OK aus. Es muessen also defekte Datenstrukturen vorliegen, um eine solche Situation zu erzeugen. Jul 8 22:40:55 wiggis kernel: Unable to handle kernel paging request at virtual address ffb8e000 Jul 8 22:40:55 wiggis kernel: printing eip: Jul 8 22:40:55 wiggis kernel: f8dd8a29 Jul 8 22:40:55 wiggis kernel: *pde = 00002063 Jul 8 22:40:55 wiggis kernel: *pte = 00000000 Jul 8 22:40:55 wiggis kernel: Oops: 0002 Jul 8 22:40:55 wiggis kernel: CPU: 0 Jul 8 22:40:55 wiggis kernel: EIP: 0010:[] Not tainted Jul 8 22:40:55 wiggis kernel: EFLAGS: 00010212 Jul 8 22:40:55 wiggis kernel: eax: 00000ffc ebx: f32472b0 ecx: ffb8d000 edx: 77090000 Jul 8 22:40:55 wiggis kernel: esi: 0000001c edi: f324730c ebp: f3247278 esp: e7f17d94 Jul 8 22:40:55 wiggis kernel: ds: 0018 es: 0018 ss: 0018 Jul 8 22:40:55 wiggis kernel: Process local (pid: 28885, stackpage=e7f17000) Jul 8 22:40:55 wiggis kernel: Stack: e7f17e1c f32472d0 f8da5e92 f3247278 dac58238 00000000 e7f16000 e7f17ddc Jul 8 22:40:55 wiggis kernel: e7f17e84 e7f17e1c f8dd8984 f8da8caa e7f17e1c e7f17e1c fffffff5 e7f17e1c Jul 8 22:40:55 wiggis kernel: f60e4880 e7f16000 00000000 e7f16000 00000000 00000000 f8da8f04 e7f17e1c Jul 8 22:40:55 wiggis kernel: Call Trace: [] [] [] [] [] Jul 8 22:40:55 wiggis kernel: [] [] [] [] [read_cache_page+140/288] [] Jul 8 22:40:55 wiggis kernel: [] [] [link_path_walk+929/2212] [path_walk+26/28] [path_lookup+27/36] [__user_walk+38/64] Jul 8 22:40:55 wiggis kernel: [sys_lstat64+25/112] [system_call+51/56] Jul 8 22:40:55 wiggis kernel: Jul 8 22:40:55 wiggis kernel: Code: c6 44 08 04 00 8b 43 10 8b 10 a1 88 a2 2d c0 f7 d8 39 05 84 Jul 8 22:40:55 wiggis postfix/master[2484]: warning: process /usr/libexec/postfix/local pid 28885 killed by signal 11 Nun scheint der ganze Cache "am Arsch" zu sein. Kurz darauf knallt es im NFS-Client Code. Eine lokal gecachte Inode-Nummer stimmt nicht mehr mit der ueberein, die vom Server herkommt: Jul 8 22:41:20 wiggis kernel: <3>nfs_refresh_inode: inode number mismatch Jul 8 22:41:20 wiggis kernel: expected (0x9/0x3), got (0x9/0xf8db2b1800000003) Noch etwas spaeter ein weiterer Knall im NFS-Client. Hier kommt es zu einer exception in der CPU: Jul 8 23:13:00 wiggis kernel: kernel BUG at auth.c:92! Jul 8 23:13:00 wiggis kernel: invalid operand: 0000 Jul 8 23:13:00 wiggis kernel: CPU: 0 Jul 8 23:13:00 wiggis kernel: EIP: 0010:[] Not tainted Jul 8 23:13:00 wiggis kernel: EFLAGS: 00010287 Jul 8 23:13:00 wiggis kernel: eax: f727cd01 ebx: e7f17d80 ecx: 00000246 edx: 00000000 Jul 8 23:13:00 wiggis kernel: esi: e7f17d74 edi: e7f17d74 ebp: f60e4880 esp: e7f17d34 Jul 8 23:13:00 wiggis kernel: ds: 0018 es: 0018 ss: 0018 Jul 8 23:13:00 wiggis kernel: Process local (pid: 6675, stackpage=e7f17000) Jul 8 23:13:00 wiggis kernel: Stack: e7f17d80 f8daa396 e7f17d80 e7f17d74 00000001 f8da9407 e7f17d74 e7f17d6c Jul 8 23:13:00 wiggis kernel: f8da5479 e7f17d74 da1dfc5c e7f17e18 e7f17e70 f3192780 00000000 00000000 Jul 8 23:13:00 wiggis kernel: 00000000 00000000 00f00baa 00000000 00000000 f60e4880 00000000 00000000 Jul 8 23:13:00 wiggis kernel: Call Trace: [] [] [] [] [] Jul 8 23:13:00 wiggis kernel: [] [] [sock_recvmsg+61/188] [_alloc_pages+22/24] [do_anonymous_page+212/244] [do_no_page+51/444] Jul 8 23:13:00 wiggis kernel: [handle_mm_fault+82/180] [in_group_p+30/40] [vfs_permission+116/240] [cached_lookup+46/84] [link_path_walk+604/2212] [path_walk+26/28] Jul 8 23:13:00 wiggis kernel: [path_lookup+27/36] [__user_walk+38/64] [sys_lstat64+25/112] [system_call+51/56] Jul 8 23:13:00 wiggis kernel: Jul 8 23:13:00 wiggis kernel: Code: 0f 0b 5c 00 28 0d db f8 8d 74 26 00 8b 43 10 c7 43 18 00 00 Jetzt wir's strub. Der Kernel meint eine Page im Swap zu haben, die aber schon lange weg ist: Jul 9 03:09:53 wiggis kernel: <3>swap_free: Bad swap file entry f8db2b18 Und das bringt den ganzen Swap-Algorythmus durcheinander. kswapd, ein Kernelthread crasht: Jul 9 03:10:52 wiggis kernel: kernel BUG at page_alloc.c:144! Jul 9 03:10:52 wiggis kernel: invalid operand: 0000 Jul 9 03:10:52 wiggis kernel: CPU: 0 Jul 9 03:10:52 wiggis kernel: EIP: 0010:[__free_pages_ok+100/696] Not tainted Jul 9 03:10:52 wiggis kernel: EFLAGS: 00010286 Jul 9 03:10:52 wiggis kernel: eax: c027b954 ebx: c3e22ae0 ecx: c027b6c0 edx: 00000003 Jul 9 03:10:52 wiggis kernel: esi: 00000000 edi: 00000003 ebp: 00000c80 esp: c4067f1c Jul 9 03:10:52 wiggis kernel: ds: 0018 es: 0018 ss: 0018 Jul 9 03:10:52 wiggis kernel: Process kswapd (pid: 4, stackpage=c4067000) Jul 9 03:10:52 wiggis kernel: Stack: e97a3e00 c3e22ae0 00000003 00000c80 c013438e c3e22ae0 000001d0 00000003 Jul 9 03:10:52 wiggis kernel: 00000c80 c01326d9 e97a3e00 c3e22ae0 c01292d2 c012a54f c012930b 00000020 Jul 9 03:10:52 wiggis kernel: 000001d0 c027b878 c027b878 c4066000 0001a40c 000001d0 c027b878 c01295d3 Jul 9 03:10:52 wiggis kernel: Call Trace: [try_to_free_buffers+146/240] [try_to_release_page+69/72] [shrink_cache+490/868] [__free_pages+27/28] [shrink_cache+547/868] Jul 9 03:10:52 wiggis kernel: [shrink_caches+47/60] [try_to_free_pages_zone+96/236] [kswapd_balance_pgdat+74/152] [kswapd_balance+26/48] [kswapd+153/188] [arch_kernel_thread+40/56] Jul 9 03:10:52 wiggis kernel: Jul 9 03:10:52 wiggis kernel: Code: 0f 0b 90 00 9a b7 23 c0 89 d8 2b 05 10 bc 2d c0 69 c0 ab aa In dem Augenblick, in dem nun etwas aus- oder eingeswapt werden sollte, geht das schief: Jul 9 04:57:09 wiggis kernel: kernel BUG at page_alloc.c:144! Jul 9 04:57:09 wiggis kernel: invalid operand: 0000 Jul 9 04:57:09 wiggis kernel: CPU: 0 Jul 9 04:57:09 wiggis kernel: EIP: 0010:[__free_pages_ok+100/696] Not tainted Jul 9 04:57:09 wiggis kernel: EFLAGS: 00010286 Jul 9 04:57:09 wiggis kernel: eax: 0200080d ebx: c3e22ae0 ecx: c3e22ae0 edx: 00000000 Jul 9 04:57:09 wiggis kernel: esi: 00000000 edi: 00000000 ebp: ee6c4e44 esp: cead5ee8 Jul 9 04:57:09 wiggis kernel: ds: 0018 es: 0018 ss: 0018 Jul 9 04:57:09 wiggis kernel: Process rsync (pid: 7716, stackpage=cead5000) Jul 9 04:57:09 wiggis kernel: Stack: c3e22ae0 00001000 00000000 ee6c4e44 0000001e f4c2cb80 00001000 ffb77000 Jul 9 04:57:09 wiggis kernel: c0123817 c3e22ae0 f7b0e734 00000000 ee6c4e44 c012a54f c01232d5 cead5f8c Jul 9 04:57:09 wiggis kernel: c3e22ae0 00000000 00001000 f4c2cba0 f4c2cb80 40462008 f4c2cba0 00001000 Jul 9 04:57:09 wiggis kernel: Call Trace: [file_read_actor+147/192] [__free_pages+27/28] [do_generic_file_read+517/1076] [generic_file_read+142/396] [file_read_actor+0/192] Jul 9 04:57:09 wiggis kernel: [sys_read+89/176] [system_call+51/56] Jul 9 04:57:09 wiggis kernel: Jul 9 04:57:09 wiggis kernel: Code: 0f 0b 90 00 9a b7 23 c0 89 d8 2b 05 10 bc 2d c0 69 c0 ab aa Dann hat Fabian zugeschlagen: Jul 9 10:32:12 wiggis kernel: <4>nfsd: last server has exited