[Armadillo:06173] (Armadillo-220)flatfsd -s が終了しない

Tsutomu Ando email@hidden
2010年 11月 17日 (水) 10:49:58 JST


こんにちは、安藤と申します。

Armadillo-220 で CGI から flatfsd -s を実行しようとしているのですが、
flatfsd -s が終了しない現象で悩んでいます。時々、10 秒程度で終了する場
合も有るのですが、10 回に 9 回は終了しない (もしくは、40 分程度かかる)
です。

どなたか、flatfsd -s を CGI から実行させている方でこの問題の回避策を
御存知の方、いらっしゃらないでしょうか。


尚、シリアルコンソールから
[email@hidden (ttyAM0) ~]# flatfsd -s
と実行すると、5 秒もかからず終了します。

また、使用している HTTP サーバは thttpd です。

プログラムは以下の通りで、index.html から flat.cgi を呼び出します。

index.html --- ここから
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <title>flatfsd test</title>
    <meta http-equiv="Content-Type" content="text/html">
</head>
<body>
<h1>flatfsd test</h1>

<form method="post" action="/cgi-bin/flat.cgi">

  <hr>
  <p>
    <table border="0">
      <tr>
        <td align="center" valign="middle"><input type="submit" name="button" value="FlatFsd"></td>
      </tr>
    </table>
  </p>
  <hr>

</form>

</body>
</html>
--- ここまで

flat.c(flat.cgi) --- ここから
#include <stdio.h>
#include "simple-cgi-app-io.h"

int main()
{
        char *args[] = {"/bin/flatfsd", "-s", NULL};
        int ret = 0;

        /* cgi_exec() */
        printf("Content-type: text/html\n\n");
        printf("Start flatfsd at cgi_exec()<br>\n");
        ret = cgi_exec(args[0], args);
        if (ret < 0) {
                printf("500 cgi_exec() error.<br>\n");
        } else {
                printf("200 cgi_exec() success.<br>\n");
        }
        printf("Complete flatfsd.<br>\n");

        /* system() */
/*      printf("Content-type: text/html\n\n"); */
/*      printf("Start flatfsd at system()<br>\n"); */
/*      system("flatfsd -s"); */
/*      printf("Complete flatfsd.<br>\n"); */

        return 0;
}
--- ここまで

ps で実行プロセスを確認すると

[email@hidden (ttyAM0) ~]# ps ax
  PID  Uid  VmSize Stat Command
    1 root     588 S   init
    2 root         SWN [ksoftirqd/0]
    3 root         SW< [events/0]
    4 root         SW< [khelper]
    5 root         SW< [kthread]
   10 root         SW< [kblockd/0]
   14 root         SW  [khubd]
   48 root         SW  [pdflush]
   49 root         SW  [pdflush]
   51 root         SW< [aio/0]
   50 root         SW  [kswapd0]
  606 root         SW  [mtdblockd]
  618 root         SW< [pegasus]
  627 root         SW< [krfcommd]
  759 root     608 R   syslogd -m 0 -L
  769 root     596 S   klogd
  853 root     560 S   inetd
  871 root    1504 S   /sbin/sshd -f /etc/ssh/sshd_config
  881 root     912 S   thttpd -C /etc/thttpd.conf
  894 root     612 S   /bin/cron
  910 root     728 S   -ash
  911 root     564 S   /sbin/getty -L 115200 ttyAM1 vt102
  923 root     324 S N flat.cgi
  925 root     912 S   thttpd -C /etc/thttpd.conf
  926 root     672 R N /bin/flatfsd -s
  928 root     640 R   ps ax
[email@hidden (ttyAM0) ~]#

となり、flatfsd -s は優先度が低く設定された状態ですが実行されている様
です。

上の flat.c にて cgi_exec() ではなく system() を用いた場合でも同じく、
flatfsd -s が終了しません。

使用しているカーネル:
linux-a220-1.10.bin.gz

開発環境:
Debian GNU/Linux Squeeze 上の Virtualbox で動作させた
Debian GNU/Linux Etch-And-A-Half に、a220-development-environment や
atde-essential-arm などの開発パッケージを入れたもの。

以上、よろしくお願いします。
-- 
 安藤



armadillo メーリングリストの案内