ACL2 退出代码 137 是什么意思?

What does ACL2 exit code 137 mean?

ACL2 退出代码 137 是什么意思?输出内容如下:

Form:  ( INCLUDE-BOOK "centaur/ubdds/param" ...)
Rules: NIL
Time:  0.00 seconds (prove: 0.00, print: 0.00, other: 0.00)
:REDUNDANT
Note: not introducing any A4VEC field bindings for A, since none of
its fields appear to be used.
Note: not introducing any MODSCOPE field bindings for SCOPE, since
none of its fields appear to be used.


;;; Starting full GC,  10,736,500,736 bytes allocated.
Exit code from ACL2 is 137
top.cert seems to be missing

退出代码 137 表明它已被 bash 与 -9

杀死

参考:http://www.tldp.org/LDP/abs/html/exitcodes.html

看起来 "Linux OOM killer" 终止了您的程序。

退出状态 137 表示程序被信号 9 (SIGKILL) 终止(参见 here):

When a command terminates on a fatal signal whose number is N, Bash uses the value 128+N as the exit status.

128+9=137

日志中的这条消息告诉我们您的 ACL2 证明消耗了 10Gb 内存:

;;; Starting full GC, 10,736,500,736 bytes allocated.

Linux 有一个功能,当系统内存非常低时,它会杀死有问题的进程。它被称为 OOM 杀手:https://www.kernel.org/doc/gorman/html/understand/understand016.html

此类事件由内核记录。您可以立即看到它们以确保:

$ dmesg |grep -i "killed process"
Mar  7 02:43:11 myhost kernel: Killed process 3841 (acl2) total-vm:128024kB, anon-rss:0kB, file-rss:0kB

有两个 ACL2 调用:set-max-memmaybe-wash-memory,您可以使用它们来控制内存消耗。

(include-book "centaur/misc/memory-mgmt" :dir :system) ;; adds ttag
(value-triple (set-max-mem (* 4 (expt 2 30))))           ;; 4 GB

不幸的是,这两个调用不能保证内存将被释放。考虑使用更强大的计算机进行证明。