2011-06-28 107 views
4

最近我經常崩潰R。該消息總是報告R作爲錯誤崩潰

*** caught segfault *** 
address xxx, cause 'memory not mapped' 

重現將是艱難的,在任何情況下,我不能共享大型專有數據集。我的問題是:我能否報告墜機事故以便調查?生成coredump有幫助嗎?似乎關於報告錯誤的常見問題解答部分並不意味着這種意外情況。

+1

至少你應該添加sessionInfo()到這個問題,並報告發生了什麼:你是從數據庫,文件,寫作等讀? – mdsumner

+0

感謝所有回答。在segfault之後運行sessionInfo()是不可能的。我的代碼使用了大量的包(RODBC,動物園,plyr,reshape,ggplot2),其中一些使用C(動物園,RODBC),或者大量調用C例程(ggplot,調用網格)。我想知道是否有可能確定違規包裹。 – gappy

+0

sessionInfo()報告的類似內容會做,實際運行它沒有技術上的必要性,它只是一種超級懶惰的方式來提供基本信息,所以我想我們應該用一根實際的棒子來打敗你的頭。 – mdsumner

回答

10

我不會將它們報告給R-core/R-devel,除非你100%確定它是R中的一個錯誤而不是一個包。這個錯誤更可能出現在你正在使用的軟件包中。如果你不能創建一個可重現的bug的例子,那麼軟件包維護者不太可能試圖追捕它。

+3

放大:首先找到一個可重現的例子(如有必要,創建一個批處理文件,多次運行相同的分析,直到發生崩潰)。然後縮小這種情況:您可以使用多少套可用的軟件包,但仍然會導致崩潰?你能用同樣大小的隨機,匿名或隨機數據來做到這一點嗎? –

4

可以發生此錯誤消息

  1. 硬件過熱
  2. 基於R的或封裝的過期版本
  3. 在封裝
  4. 中的R中的一個錯誤的一個錯誤

直到你可以複製它,如果你不想公開你自己的數據,我懷疑有人會關注崩潰報告。

1

'內存未映射'文本導致強烈懷疑這是系統問題:操作系統,C庫或BLAS中的任何一個都可能處於危險之中。

大型計算機作業令人沮喪 - 但除此之外,沒有其他辦法可以將其提升爲一個可重複使用的最小例子,您也可以使用模擬數據來完成這一任務。

作爲一個開始,嘗試查看問題是否存在於不同的操作系統上,例如,嘗試在Mac或不同的linux風格或windoze上重新運行該問題。