2012-11-15 56 views
11

我正在運行一個程序,並且它被分割故障中斷。問題是核心轉儲文件被創建,但大小爲零。分割故障後空核心轉儲文件

您是否聽說過這種情況以及如何解決?

我在磁盤上有足夠的空間。我已經執行ulimit -c unlimited來限制核心文件的大小 - 無論是運行它還是放在提交的批處理文件的頂部 - 但仍然有0字節的核心轉儲文件。包含這些文件的文件夾的權限爲uog + rw,創建的核心文件的權限僅爲u + rw。

該程序是由C++編寫的,並通過qsub命令在Grid Engine上提交,我不知道這個信息與這個問題是否相關。

+0

你假設我在驅動器上有可用空間嗎? –

+0

零長度文件的寫入權限是什麼? – eh9

+0

下一個問題:包含目錄的權限是什麼?該進程是否在與目錄所有者不同的有效用戶標識下運行? – eh9

回答

5

這聽起來像你正在使用批處理調度程序來啓動你的可執行文件。也許Torque/PBS用來產生作業的shell會繼承不同的ulimit值?也許調度程序的默認配置不是爲了保存核心轉儲?

你能直接從命令行運行你的程序嗎?

或者如果您在調用可執行文件之前將ulimit -c unlimited和/或ulimit -s unlimited添加到您的PBS批處理腳本的頂部,您可能會覆蓋PBS的默認ulimit行爲。或者添加'ulimit -c'可以報告無論如何限制。

+0

我把'ulimit -c unlimited'和'ulimit -s unlimited'放到了PBS批處理腳本中,但是核心轉儲仍然是空的! – Ali

+1

你用於轉儲內核的文件系統是什麼? –

6

設置ulimit -c unlimited開啓了生成轉儲。 默認情況下,核心轉儲是在nfs上的當前目錄中生成的。 設置/proc/sys/kernel/core_pattern/tmp/core幫助我解決了空轉儲問題。

comment from Ranjith Ruban幫助我開發了這種解決方法。

用於轉儲內核的文件系統是什麼?

+0

我剛剛在帶有映射到NTFS驅動器(主機的驅動器)的vboxsf文件系統的Linux VirtualBox映像上出現此問題。 –

+0

以root用戶創建奇蹟的方式修改core_pattern! NFS驅動器路徑使核心文件爲零字節。 http://stackoverflow.com/a/12760552/999943除了設置創建路徑的位置外,還有一些用於更改核心文件命名方式的漂亮語法。 http://www.linuxhowtos.org/Tips%20and%20Tricks/coredump.htm – phyatt

0

您可以設置使用qsub選項,如-l h_vmem=6G到儲庫6 GB的物理內存所需的資源限制,如物理內存。

對於文件塊,您可以將h_fsize設置爲適當的值。

見資源限制的qconf手冊頁的部分:

http://gridscheduler.sourceforge.net/htmlman/htmlman5/queue_conf.html

s_cpu  The per-process CPU time limit in seconds. 

s_core The per-process maximum core file size in bytes. 

s_data The per-process maximum memory limit in bytes. 

s_vmem The same as s_data (if both are set the minimum is 
      used). 
h_cpu  The per-job CPU time limit in seconds. 

h_data The per-job maximum memory limit in bytes. 

h_vmem The same as h_data (if both are set the minimum is 
      used). 

h_fsize The total number of disk blocks that this job can 
      create. 

此外,如果集羣使用本地TMPDIR到每個節點,和被填滿,可以設置TMPDIR到備用位置與更能力,例如NFS共享:

export TEMPDIR=<some NFS mounted directory> 

然後用-V選項當前環境導出到工作啓動qsub

上面的一個或其組合可以幫助您解決問題。

0

如果在裝入的驅動器中運行核心文件。核心文件不能寫入已安裝的驅動器,而必須寫入本地驅動器。

您可以將文件複製到本地驅動器。