(toppers-users 4040) Re: jsp 1.4.3でアボートします

yasuo kominami(nifty) ykominami @ nifty.com
2012年 11月 9日 (金) 12:12:25 JST


野田様

小南と申します。

まず最初に確認しておきたいことががあります。
JSP1.4.3のlinuxシュミレータを使用されているとのことですが、TOPPERSプロジェクト
の開発成果物として公開されているJSP 1.4.3(に限らす、1.4以降すべてにおいて)の
linuxシュミレータは、現在広く使われているバージョンのLinuxカーネル上ではコンパ
イルエラーが発生してコンパイルできません

linuxシミュレータの実装は、doc/linux.txtに記載されている「カーネル2.2」の内部構造
に依存しており、Linuxカーネル2.3か2.4の段階でそのカーネル内部構造が変更となり、
コンパイルできなくなっています。
linuxシミュレータは、JSP 1.4の一部として2003年に公開されて以降、一度も更新され
ておりません。

On Thu, Nov 8, 2012 at 4:17 PM, 野田敬雄 <takaon90 @ gmail.com> wrote:

> はじめまして、野田と申します。
>
> 会社の研修で、ITRONのプログラムを作成しろという課題を与えられていろいろ頑張っているんですが、
> 完全な実力不足で環境さえ作成できないため、申し訳ありませんがアドバイスをお願いします。
>
> jsp-1.4.3のlinuxシミュレータでサンプルアプリのコンパイルが通るところまでは行ったんですが、
> 実行してすぐにアボートしてしまいます。
>
> gdbもろくに使えないレベルなので解釈が全く違っているかもしれませんが、
> なんとなく実行結果を見た限りでは、無限ループに入ってメモリを食いつぶした、
> という感じかな、と思っています。
>
> こういった状況の場合、原因としてどんなことが考えられるでしょうか?
> よろしくお願いします。
>
> 以下に環境と実行結果のログを貼り付けます。
>
> ハード(?):
> WindowsXP+VMwarePlayer2.5.5
> OS: Ubuntu10.04(8.04LTSからアップグレード)
>
> ソフト:
> gcc              4:4.4.3-1ubuntu1
> gcc-4.4       4.4.3-4ubuntu5.1
> g++             4:4.4.3-1ubuntu1
> g++4.4        4.4.3-4ubuntu5.1
> binutils       2.20.1-3ubuntu7.1
> libnewlib0  1.18.0-1ubuntu2
>
>
> -----------------実行結果---------------------------------------
> noda @ ubuntu-vm:~/work/jsp/APL$ ./jsp
>
> 相談されているlinuxシュミレータは、以下のメッセージから判断すると、

TOPPERS/JSP Kernel Release 1.4 (patchlevel = 3) for Linux(posix-base)
>

私が作成し、以下で紹介したパッチをあてたものではないかと思います。

http://www.toppers.jp/TOPPERS-USERS/2008-January/002534.html

私の作成したパッチを当てているのでしたら、「動作したらラッキー」ぐらいに
思ってください。
パッチを作成した環境では(Fedora 7)では、sample1の実行に支障がないこと
は確認しましたが、POSIXではシグナルハンドラでlongjmp関数が安全に使用
できることは保障されていないため、パッチが期待したとおりに動作するか否か
は、Linuxカーネルの実装にどうしても依存してしまうからです。



(Nov  7 2012, 16:56:27)
> Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
>                             Toyohashi Univ. of Technology, JAPAN
> Copyright (C) 2004-2006 by Embedded and Real-Time Systems Laboratory
>             Graduate School of Information Science, Nagoya Univ., JAPAN
>
>  以下のメッセージが出る段階で、Linuxカーネルが、パッチを適用したlinuxシミュレータ
の期待した動作をしてない可能性が、非常に高いです。

*** longjmp causes uninitialized stack frame ***: ./jsp terminated
>

 私がcygwinにlinuxシミュレータを移植しようとした時にも同じような現象が発生し、
移植を断念したことがあります。

私ができる現実的なアドバイスは、以下の通りです。

1. TOPPERS/ASPのMac OS Xシミュレータを用いる。
JSPでなく、ASPであり、Mac OS Xを使うことになりますが、UNIX上のシミュレータ
として現在唯一メンテナンスされており(メンテナは高田先生です)、また現時点までに
動かないという報告は上がっていません。

研修というレベルであれば(過去との互換性が最重要という話でなければ)、ITRON
OS上のプログラム作成という観点からいえば、JSPとASPは一緒といっていいです。

2.パッチを適用したlinuxシミュレータが動作する古いバージョンのLinuxカーネル
の上で動作させる。

最近使われているバージョンのLinuxカーネルでなく、古いバージョンであれば、
動作する可能性が高いです。
私がパッチを作成したのはFedora 7です。
現在は手元に32bit Linuxマシンがないため確認できません。

現在の環境でコンパイルするのならば、JSP 1.4.3ではなく、JSP 1.4.4のソース
を使うことをお勧めします。
linuxシミュレータ自体のソースには変更がありませんが、その他の、例えば
コンフィギュレータ(cfg)のソースも、1.4.3以前のものは、gcc4以降ではコンパイル
エラーが発生します。

JSPカーネル自体は問題がない場合でも、開発環境を含めて、現時点で気軽に
使うには、JSPよりもASPのほうが、便利なことが多いです。
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.toppers.jp/pipermail/users/attachments/20121109/c904bb79/attachment.html>