Unsafe code in signal handler (linux version)


29 December 2022 - PtokaX (20th anniversary edition) released...
11 April 2017 - PtokaX released...
8 April 2015 Anti child and anti pedo pr0n scripts are not allowed anymore on this board!
28 September 2015 - PtokaX for Windows 10 IoT released...
3 September 2015 - PtokaX released...
16 August 2015 - PtokaX released...
1 August 2015 - Crowdfunding for ADC protocol support in PtokaX ended. Clearly nobody want ADC support...
30 June 2015 - PtokaX released...
30 April 2015 Crowdfunding for ADC protocol support in PtokaX
26 April 2015 New support hub!
20 February 2015 - PtokaX released...
13 April 2014 - PtokaX released...
23 March 2014 - PtokaX testing version build 454 is available.
04 March 2014 - PtokaX.org sites were temporary down because of DDOS attacks and issues with hosting service provider.

Main Menu

Unsafe code in signal handler (linux version)

Started by dmvn, 07 December, 2013, 22:23:24

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


I'm now trying to make my hub working on new PtokaX 0.500, and I noticed some potential problems in source code (at least in UNIX part).

It's a known fact that signal handlers are restricted by set of calls that are safe inside them (referring to http://man7.org/linux/man-pages/man7/signal.7.html ).
In particular, malloc and pthread_mutex_lock are cannot be done in signal handlers.

But in current code there are two problems:
1) std::string is used in first line of SigHandler function (which implies use of malloc() ),
2) adding SHUTDOWN event to queue is of course wrapped by mutex, and this is unsafe too.

This may lead to deadlocks, coredumps on terminating process, etc.

I've noticed this because of another problem, which is under my investigation now: PtokaX freezes after running again on converted users base, but I had not found why.


Thank you for report, it will be fixed in next release  ;)
"Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris." - Larry Wall

SMF spam blocked by CleanTalk