Browse Source

posix main: hotfix for px4 application not exiting anymore

Some threads do not exit and are still running when
trying to exit SITL running under Windows in Cygwin.

This problem was introduced with:
- posix shell #10173 because of strating a child process
for the startup script and mixing up the signal handling
(only Ctrl+C broken)
- lockstep #10648 because of simulator threads not
stopping gracefully anymore with timing race conditions
(no graceful exit possible anymore)

I leave the SIGINT handler on its default implementation for
Cygwin which kills the process and all its threads when pressing
Ctrl+C.

This hotfix at least allows the usage of Ctrl+C again instead
of forcing the user to use the task manager to shut down
px4.exe going crazy on CPU load instead of exiting
everytime.
sbg
Matthias Grob 6 years ago committed by Beat Küng
parent
commit
bda60ecfd6
  1. 7
      platforms/posix/src/main.cpp

7
platforms/posix/src/main.cpp

@ -407,7 +407,14 @@ void register_sig_handler() @@ -407,7 +407,14 @@ void register_sig_handler()
sig_segv.sa_handler = sig_segv_handler;
sig_segv.sa_flags = SA_RESTART | SA_SIGINFO;
#ifdef __PX4_CYGWIN
// Do not catch SIGINT on Cygwin such that the process gets killed
// TODO: All threads should exit gracefully see https://github.com/PX4/Firmware/issues/11027
(void)sig_int; // this variable is unused
#else
sigaction(SIGINT, &sig_int, nullptr);
#endif
//sigaction(SIGTERM, &sig_int, nullptr);
sigaction(SIGFPE, &sig_fpe, nullptr);
sigaction(SIGPIPE, &sig_pipe, nullptr);

Loading…
Cancel
Save