[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:91952] swap_duplicate


 かなりと申します。

 常時接続でADSLルータ兼パケットフィルタとして
使っているマシンがあるのですが、swap_duplicateが
発生して電源を再投入せざるを得なくなりました。

 症状としては、cronがスクリプトを実行した際に
swap_duplicateが発生し、その後はcronも実行されず
telnetで入ることもできなくなりました。
ただ、/var/log/messagesによるとエラーの発生した後も
8時間程度はipchainsが機能していました。稼働時間は
26日+4時間程度です。

 googleやsearch.luky.orgでswap_duplicateを調べた
ものの、カーネルの話はお手上げでした。そこで質問
なのですが、このswap_duplicateについて
(1)考えられる原因
(2)予防策
について何かありませんでしょうか。

環境:
マシン:東芝DynaBook 620CT(Pentium 100MHz,メモリ40MB)
    OS:Vine Linux 2.1.5
kernel:2.2.19-0vl0.23(再構築してあります)

/var/log/messagesの該当部分:
-----ここから-----
Mar 19 16:22:00 620ct kernel: swap_duplicate: entry 68247400, offset exceeds max
Mar 19 16:22:00 620ct kernel: VM: killing process adslcontinue.sh
Mar 19 16:22:00 620ct kernel: swap_free: offset exceeds max
Mar 19 16:22:00 620ct kernel: swap_free: Trying to free nonexistent swap-page
Mar 19 16:22:00 620ct last message repeated 3 times
Mar 19 16:22:00 620ct kernel: swap_free: offset exceeds max
Mar 19 16:22:00 620ct kernel: swap_free: Trying to free nonexistent swap-page
Mar 19 16:22:00 620ct kernel: swap_free: swap-space map bad (entry 003b6800)
Mar 19 16:22:00 620ct kernel: swap_free: Trying to free nonexistent swap-page
Mar 19 16:22:01 620ct last message repeated 2 times
Mar 19 16:22:04 620ct kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000000
Mar 19 16:22:04 620ct kernel: current->tss.cr3 = 00101000, %%cr3 = 00101000
Mar 19 16:22:04 620ct kernel: *pde = 00000000
Mar 19 16:22:04 620ct kernel: Oops: 0002
Mar 19 16:22:04 620ct kernel: CPU:    0
Mar 19 16:22:04 620ct kernel: EIP:    0010:[sync_inodes+92/204]
Mar 19 16:22:04 620ct kernel: EFLAGS: 00010246
Mar 19 16:22:04 620ct kernel: eax: 00000000   ebx: 82478330   ecx: 82478338   edx: 827a543c
Mar 19 16:22:04 620ct kernel: esi: 827a543c   edi: 827a5400   ebp: 00000000   esp: 827adfb8
Mar 19 16:22:04 620ct kernel: ds: 0018   es: 0018   ss: 0018
Mar 19 16:22:04 620ct kernel: Process kupdate (pid: 3, process nr: 3, stackpage=827ad000)
Mar 19 16:22:04 620ct kernel: Stack: 827ac1ce 0008e000 80129981 00000000 00000000 827ac000 801e784b 827ac1ce
Mar 19 16:22:04 620ct kernel:        0008e000 0008e000 80129e8c 00000f00 82829fb4 80106000 80108b33 00000000
Mar 19 16:22:04 620ct kernel:        00000f00 8024dfd8
Mar 19 16:22:04 620ct kernel: Call Trace: [sync_old_buffers+21/444] [tvecs+13515/15648] [kupdate+112/116] [get_options+0/116] [kernel_thread+35/48]
Mar 19 16:22:04 620ct kernel: Code: 89 10 a1 08 66 22 80 89 48 04 89 01 c7 41 04 08 66 22 80 89
-----ここまで-----

adslcontinue.shはcronで2分毎に実行させています。
adslの接続状況を調べてdownしていたらリブートを
かけるというものです。adslの接続にはppp-2.4.0-2vl0と
rp-pppoe-3.1-0vl0を利用しています。
-----ここから-----
#!/bin/sh
LANG=C

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:/etc/rc.d/init.d
DATE=`date +%Y-%m-%d`
 LOG=/var/log/adsl_log/$DATE
FLAG=/var/log/adsl_log

echo "check adsl connection..."
if ( /etc/rc.d/init.d/adsl status | egrep "down" ) > /dev/null ;
  then
  echo "re-setting adsl..."
  echo "`date` down" >> $LOG
    sleep 1
    if [ -f $FLAG/adsl1.flag ]; then
         mv $FLAG/adsl1.flag $FLAG/adsl2.flag
         exit
    fi
    if [ -f $FLAG/adsl2.flag ]; then
         mv $FLAG/adsl2.flag $FLAG/adsl3.flag
         exit
    fi
    if [ -f $FLAG/adsl3.flag ]; then
         rm $FLAG/adsl3.flag
         /sbin/shutdown -r now
         exit
     fi
  touch $FLAG/adsl1.flag
  exit
  else
    echo "adsl is ok"
    echo "`date` ok" >> $LOG
  exit
fi
-----ここまで-----

 また、参考になるかは分かりませんが、swap_duplicateの
発生する2分前の、freeの実行結果です。
             total       used       free     shared    buffers     cached
Mem:         38852      36504       2348      17720      18300       7556
-/+ buffers/cache:      10648      28204
Swap:        84664          0      84664

 未使用のHDDのswap領域を使用しようとしたものの、
HDDに不具合があってエラーを起こしたのかも、
と想像しているところです。

以上です。
----------------------------
"ka's" <ka-s _at_ penguin-box.jp>

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: