1

valgrind を使用して R パッケージをデバッグしようとしていますが、多変量 mts オブジェクトの単一の時系列オブジェクトを抽出しようとすると valgrind がクラッシュするため、データを読み込むポイントを超えることができません。プラットフォーム x86_64-redhat-linux-gnu (64 ビット) で R 2.15.0 を使用しています。

最小限のコードは次のようになります。

> data(Seatbelts)
> y<-Seatbelts[,"VanKilled"]

シートベルトの行が割り当てで定義されていないことが原因でクラッシュが発生したようですが、コマンド y<-Seatbelts[1:192,"VanKilled"] を使用すると、結果のオブジェクトは時系列オブジェクトではなくなりました. これを回避する賢い方法はありますか?

これはvalgrindによって与えられたエラーです

vex amd64->IR: unhandled instruction bytes: 0x66 0xF 0x3A 0xB 0xC0 0xC
==31160== valgrind: Unrecognised instruction at address 0x399fe26990.
==31160== Your program just tried to execute an instruction that Valgrind
==31160== did not recognise.  There are two possible reasons for this.
==31160== 1. Your program has a bug and erroneously jumped to a non-code
==31160==    location.  If you are running Memcheck and you just saw a
==31160==    warning about a bad jump, it's probably your program's fault.
==31160== 2. The instruction is legitimate but Valgrind doesn't handle it,
==31160==    i.e. it's Valgrind's fault.  If you think this is the case or
==31160==    you are not sure, please let us know and we'll try to fix it.
==31160== Either way, Valgrind will now raise a SIGILL signal which will
==31160== probably kill your program.

 *** caught illegal operation ***
address 0x399fe26990, cause 'illegal opcode'

Traceback:
 1: ts(y, start = start(x), frequency = frequency(x))
 2: `[.ts`(Seatbelts, , "VanKilled")
 3: Seatbelts[, "VanKilled"]
aborting ...
4

1 に答える 1

1

プログラムは、ご使用のバージョンのvalgrindがサポートしていない命令(ROUNDSD)を使用しています。

最初に行うことは、最新バージョンのvalgrindを使用していることを確認することです。理想的には、svnバージョンを試してみてください。これは、その命令の一部(すべてではない)のバリアントをサポートしているためです。

それでも失敗する場合は、valgrindバグトラッカーで報告する必要がありますが、すでに報告されている場合があります。

于 2012-05-18T20:14:01.123 に答える