Erlang导致页面错误

时间:2011-08-10 17:47:22

标签: erlang page-fault

当我用我的用户运行描述here的脚本时,一切都很顺利:

lorenzo@enzo:~/erlang/pei$ time erl -noshell -smp enabled -S 4 -s fib4 main 10000000

real    0m54.952s
user    1m16.090s
sys 0m0.070s

当我以root用户身份运行时,它崩溃了:

lorenzo@enzo:~/erlang/pei$ sudo time erl -noshell -smp enabled -S 4 -s fib4 main 10000000
[sudo] password for lorenzo: 
74.68user 0.04system 0:53.56elapsed 139%CPU (0avgtext+0avgdata 66064maxresident)k
0inputs+0outputs (0major+8306minor)pagefaults 0swaps

错误是可重现的。

我的问题是:

  • 有人可以试着解释一下那里发生了什么吗?

  • erlang运行时或我的操作系统有问题吗?

  • 有人可以重现此错误吗?

我正在使用内核

在ubuntu natty上运行erlang 5.7.4
Linux enzo 2.6.38-10-generic #46-Ubuntu SMP Tue Jun 28 15:07:17 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

在Phenom X4上。

2 个答案:

答案 0 :(得分:6)

为什么你认为它崩溃了? time只是在以root身份运行时显示更多信息。 Page fault不是错误,而是virtual memory的工作方式。

答案 1 :(得分:3)

两次运行之间的区别在于,在第一次运行中,您运行的是内置time的shell,但在第二次运行中,您正在运行路径中的sudo个找到的内容,这是/usr/bin/time。这两个工具具有不同的输出格式。

$ type time
time is a shell keyword
$ time echo


real    0m0.000s
user    0m0.000s
sys     0m0.000s
$ type /usr/bin/time
/usr/bin/time is /usr/bin/time
$ /usr/bin/time echo

0.01user 0.00system 0:00.00elapsed 1000%CPU (0avgtext+0avgdata 2784maxresident)k
0inputs+0outputs (0major+217minor)pagefaults 0swaps