[Armadillo:05899] A440で複数スレッドプログラムを実行するとリセットする。

email@hidden
2010年 10月 8日 (金) 12:48:34 JST


こんにちは、お世話になります。ichiと申します。

Armadillo440で複数スレッドを持つプログラムを実行すると
再起動してしまいます。
再起動するタイミングは、バラバラで数10分後のときもあれば
20時間後のときもあります。
再起動時は、リセットがかかったような状況です。
(いきなりhermitが起動する。)

以下に環境とテストプログラムのソースを記載します。
みなさまのアドバイスを頂きたくお願いします。

■機器構成
  Armadillo440
  ブートローダ 2.0.3
  カーネル     linux-a400-1.03.bin.gz
  ユーザランド romfs-a440-1.02.img.gz
  周辺機器接続無し

■プログラム
  メインから20個のスレッドを作成する。その後1秒スリープの
  単純ループ
  スレッドは、20msecのスリープを行なうだけの単純ループ
  (コンパイル時、-lpthread 追加)

■原因は?
  スレッド利用方法(プログラム)が悪い?
  20msecのスリープだけのスレッド20個も実行するのが過酷?
  外的要因?


-- ソース ここから ---------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>


pthread_t ThreadTable[20];

static void *ThreadFunction(void *argp);


int main(int argc, char *argv[])
{
int rc,tno;

	printf("Thread test program. ver 0.02\n");

	for (tno = 0; tno < 20; tno++) {
		rc = pthread_create(&ThreadTable[tno],NULL,
ThreadFunction,NULL);
		printf("THREAD(%d): pthread_create rc=%d\n",tno,rc);
	}

	for (;;) {
		sleep(1);
	}

	exit(0);
}


static void *ThreadFunction(void *argp)
{
	for (;;) {
		usleep(20000);
	}
}
--  ここまで ---------------------------------------------------------

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




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