cvise icon indicating copy to clipboard operation
cvise copied to clipboard

Obscure crash error message

Open vext01 opened this issue 1 year ago • 2 comments

Greetings!

I was reducing the Lua interpreter when after 9 days I got this crash:

...
9 days, 8:57:49 INFO (85.8%, 102252 bytes, 1926 lines)
9 days, 9:00:04 INFO (85.8%, 102245 bytes, 1926 lines)
Traceback (most recent call last):
  File "/usr/bin/cvise", line 312, in <module>
    reducer.reduce(pass_group, skip_initial=args.skip_initial_passes)
  File "/usr/share/cvise/cvise.py", line 146, in reduce
    self._run_main_passes(pass_group['main'])
  File "/usr/share/cvise/cvise.py", line 176, in _run_main_passes
    self.test_manager.run_pass(p)
  File "/usr/share/cvise/utils/testing.py", line 529, in run_pass
    success_env = self.run_parallel_tests()
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/cvise/utils/testing.py", line 445, in run_parallel_tests
    quit_loop = self.process_done_futures()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/cvise/utils/testing.py", line 378, in process_done_futures
    raise future.exception()
pebble.common.ProcessExpired: Abnormal termination

The error doesn't really tell me what went wrong. I wonder if the message could be improved somehow?

This was using cvise 2.7.0 (d9e4a505) from the Debian apt repo.

(It's possible this has already been fixed I guess)

vext01 avatar Aug 20 '24 09:08 vext01

The error comes from pebble package and it's something not expected. Hard to guess what caused that.

marxin avatar Aug 27 '24 11:08 marxin

I happened to observe this problem occasionally too. In my case after adding more debug logging in Pebble it turned out to be some kind of rare deadlock that prevents worker processes from receiving tasks and/or causing timeouts on a mutex shared between processes.

This deadlock is tough to investigate, but I'm testing whether switching to forkserver multiprocessing model helps; the current default fork strategy is dangerous because Pebble creates background threads, meanwhile forking a multithreaded program is in principle fragile in POSIX (with deadlocks being one of typical symptoms).

emaxx-google avatar Apr 22 '25 14:04 emaxx-google