2011-04-06 115 views
2

用Ctrl + C中斷下面的程序會導致perl 5.10.0出現「Segmentation fault」。它與perl 5.8.8正常工作。任何想法爲什麼?Perl 5.10.0信號處理程序問題

#!/usr/bin/perl 

# just changing the shebang line to use perl 5.10.0 causes it to seg fault 
# when interrupted with Ctrl + C 

use strict; 
use warnings; 

$SIG{INT}=\&clean; 

sub clean { 
    print 'caught'; 
} 
sleep 10; 

(從Problem with perl signal INT採取程序)

Perl的5.10版本是:

$ perl5.10.0 -v 

This is perl, v5.10.0 built for i686-linux-thread-multi 
(with 3 registered patches, see perl -V for more detail) 

Copyright 1987-2007, Larry Wall 

Binary build 1002 [283697] provided by ActiveState http://www.ActiveState.com 
Built Jan 10 2008 07:35:18 
... 

Linux發行版:

$ cat /proc/version 
Linux version 2.6.18-128.7.1.el5 ([email protected]) 
(gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) #1 SMP Wed Aug 19 04:00:49 EDT 2009 

感謝

+4

我強烈建議您在http://www.perlmonks.org/而不是此處發佈此問題。那裏有更多的Perl人可以在更多的平臺上測試它,並且誰可能知道這樣的錯誤。如果它仍然是當前Perl平臺中的一個bug,那麼它應該用'perlbug'實用程序來報告。 – btilly 2011-04-06 02:41:30

+0

爲什麼5.10.0?你有沒有試過5.10.1甚至5.12.3? – Ether 2011-04-06 03:11:10

+0

nope。這是我們在系統中最新的功能。我可以建立自己的,但我幾乎是作爲最後的手段來做到這一點。 – beluchin 2011-04-06 03:13:43

回答

0

你需要提供一些更多的細節,比如你使用的是什麼操作系統/版本,你是否使用了系統perl,perlbrew,活動perl等等。試試這個對抗Snow Leopard中由Perlbrew構建的Perl 5.12.3,我不能重現問題。

我也會按照在perlmonks.org上提問的建議。

+0

任何特定的Linux發行版?我可以嘗試啓動一個虛擬機,並在那裏拋出活動的perl,看看會發生什麼 – BadFileMagic 2011-04-06 03:11:04

+0

只是在Perl 5.12.3上試過它 - 預計它沒有問題。 Perl 5.10.0中必須存在與此相關的一些錯誤。謝謝你們。 – beluchin 2011-04-08 16:56:36