Skip to content

with-timeout stress test crashes ECL

Problem reported by scymtym. Reproducible on 16.1.3 and develop. May be BT bug (need to verify impl-ecl.lisp).

(loop :repeat 100000 :do (handler-case (bt:with-timeout (.00001) (sleep .0001)) (bt:timeout ())))
  ~ rlwrap ecl
;;; Loading "/home/jack/quicklisp/setup.lisp"
;;; Loading #P"/home/jack/Pulpit/lisps/ecl-16.1.3/lib/ecl-16.1.3/asdf.fas"
ECL (Embeddable Common-Lisp) 16.1.3 (git:0476bca326ede723e883fe06c19c2cb748b1deec)
Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
Copyright (C) 1993 Giuseppe Attardi
Copyright (C) 2000 Juan J. Garcia-Ripoll
Copyright (C) 2016 Daniel Kochmanski
ECL is free software, and you are welcome to redistribute it
under certain conditions; see file 'Copyright' for details.
Type :h for Help.  
Top level in: #<process TOP-LEVEL>.
> (ql:quickload 'bordeaux-threads)
To load "bordeaux-threads":
  Load 1 ASDF system:
    bordeaux-threads
; Loading "bordeaux-threads"

(BORDEAUX-THREADS)
> (loop :repeat 100000 :do (handler-case (bt:with-timeout (.00001) (sleep .0001)) (bt:timeout ())))

Condition of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.

Available restarts:

1. (CONTINUE) Ignore signal
2. (ABORT) ABORT

Top level in: #<process WITH-TIMEOUT thread serving: SI:TOP-LEVEL.>.
> 
Condition of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.

Available restarts:

1. (CONTINUE) Ignore signal
2. (ABORT) ABORT

Top level in: #<process WITH-TIMEOUT thread serving: SI:TOP-LEVEL.>.
> 
Condition of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.

Available restarts:

1. (CONTINUE) Ignore signal
2. (ABORT) ABORT

Top level in: #<process WITH-TIMEOUT thread serving: SI:TOP-LEVEL.>.
> 
Condition of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.

Available restarts:

1. (CONTINUE) Ignore signal
2. (ABORT) ABORT

On develop:

> (loop :repeat 100000 :do (handler-case (bt:with-timeout (.00001) (sleep .0001)) (bt:timeout ())))

Condition of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.

Available restarts:

1. (CONTINUE) Ignore signal


Condition of type: SIMPLE-ERROR
0 is an illegal frs index.
Available restarts:


Internal or unrecoverable error in:
not a lisp data object

;;; ECL C Backtrace
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(si_dump_c_backtrace+0x39) [0x7ff9f770e9d9]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(ecl_internal_error+0x44) [0x7ff9f76f7c14]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(cl_class_of+0x2dc) [0x7ff9f76e3a0c]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(clos_std_compute_applicable_methods+0x395) [0x7ff9f766bf25]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(_ecl_standard_dispatch+0x3a4) [0x7ff9f76e4264]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(cl_apply+0x155) [0x7ff9f76d74b5]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x137598) [0x7ff9f767d598]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(cl_apply+0x2e5) [0x7ff9f76d7645]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x125aab) [0x7ff9f766baab]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x12af87) [0x7ff9f7670f87]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(_ecl_standard_dispatch+0x1c0) [0x7ff9f76e4080]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(cl_apply+0x155) [0x7ff9f76d74b5]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(cl_make_condition+0x17a) [0x7ff9f768de5a]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(cl_apply+0x155) [0x7ff9f76d74b5]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x148aaf) [0x7ff9f768eaaf]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(cl_funcall+0x86) [0x7ff9f76d7296]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(cl_error+0xf1) [0x7ff9f76f8ba1]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x1b2c92) [0x7ff9f76f8c92]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(FEwrong_type_argument+0x1e) [0x7ff9f76f8cbe]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x1d85b9) [0x7ff9f771e5b9]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(ecl_copy_subarray+0x58) [0x7ff9f771ef88]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(ecl_subseq+0x7c) [0x7ff9f771ff4c]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(cl_copy_seq+0x25) [0x7ff9f77200a5]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x1b3dbb) [0x7ff9f76f9dbb]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(cl_string_upcase+0xd0) [0x7ff9f76fbc80]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x16cac4) [0x7ff9f76b2ac4]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x175153) [0x7ff9f76bb153]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x171fd1) [0x7ff9f76b7fd1]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x148b44) [0x7ff9f768eb44]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(cl_funcall+0x86) [0x7ff9f76d7296]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(FEerror+0xee) [0x7ff9f76f7f8e]
;;; /home/jack/Pulpit/lisps/ecl-develop/lib/libecl.so.16.1(+0x1dbf50) [0x7ff9f7721f50]
[1]    13103 abort (core dumped)  ecl-develop