2012-05-10 14 views
1

valgrindでRパッケージをデバッグしようとしていますが、試行中にvalgrindがクラッシュするため、多変量mtsオブジェクトの単一の時系列オブジェクトを抽出する。私はプラットフォームx86_64-redhat-linux-gnu(64-bit)でR 2.15.0を使用しています。valgrindを使用してRをデバッグすると、mtsオブジェクトの列を抽出するとvalgrindがクラッシュする

> 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 ... 
+0

提供されている2行のコードは、私のR(2.15.0,64ビット、64ビット、Ubuntu 12.04LTS)のコピーをクラッシュさせません。 –

+0

すばやい返信をありがとう、おそらくRやvalgrindのインストールに何か問題があります。ちょうど明らかにするために、Rは私のために何のエラーも与えませんが、valgrindでコードを実行するとクラッシュします。 –

+0

それは私のためのオブジェクトを返します: '> str(y) 1969年から1985年までの時系列[1:192]:12 6 12 8 10 13 11 6 10 16 ...'。システムで32ビットRを実行しようとしましたが、そこにクラッシュするかどうかを確認しましたか? –

答えて

1

であるあなたのプログラムはvalgrindののバージョンはサポートしていないことを指示(ROUNDSD)を使用しています。

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

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

+0

私が使用していたvalgrindが古い(3.6.1)、valgrindを3.8.0に更新してすべてを修正しました。 –

関連する問題