06-06-2009
Your signal handler isn't async-signal safe
Your signal handler is not async-signal safe, so you've deadlocked.
You can't do things like malloc() or free() calls in a signal handler. Your application deadlocks because it get a SEGV when calling free(). The free() call will lock a mutex. Your SEGV happens after the mutex is locked. Your signal handler then gets called, and it looks like your handler makes a popen() call. The popen() call calls malloc(), which blocks waiting for the mutex that the free() call locked.
If you look at the man page for popen(), you'll see that it's MT-safe but not async-signal safe.
10 More Discussions You Might Find Interesting
1. Programming
Facingproblem in writing a c code that sorts a given string using piping popen() system call..
the question reads
write a c program inclusive of all error conditions that sorts the given string of arrays as{"bravo","sit","class"}using formatted piping popen() system call (1 Reply)
Discussion started by: toughguy2handle
1 Replies
2. UNIX for Advanced & Expert Users
Hi,
Ho do I differentiate system call from library call?
for example if I am using chmod , how do I find out if it is a system call or library call?
Thanks
Muru (2 Replies)
Discussion started by: muru
2 Replies
3. Programming
How the c compiler differentiates the system calls and function calls? (1 Reply)
Discussion started by: rangaswamy
1 Replies
4. AIX
system() in a c++ program halts in AIX 5.3, though the corresponding binary working fine in AIX 5.2 and lower version. I am executing a script using system in a c++ program. the script has the execute permission by all. (0 Replies)
Discussion started by: Amiya Rath
0 Replies
5. Programming
Hi
I'm studing the system call. I've written a small program that return the time spent in doing some operations. Now I'd like to write one that return the time spent in user mode of a process.
I'm reading that i should use the tms struct:
clock_t times(struct tms *buf);
struct tms {... (2 Replies)
Discussion started by: Dedalus
2 Replies
6. Programming
hello all,
I have developed a server application in C for ulinux kernel 2.6.It works very fine; creating a socket, binding it to a port, listening for incoming sockets and accepting them ,all finish without any error.
But there is a problem regarding application crash.After an intentionally... (1 Reply)
Discussion started by: Sedighzadeh
1 Replies
7. Programming
in man system it talks about SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored.
Does this signal stuff also happen in popen command?
(even though man popen says nothing about signals)
also if I am not using wait(&status) and I am using waitpid(pid, NULL, 0)
how would... (1 Reply)
Discussion started by: omega666
1 Replies
8. Programming
hi everyone
i wrote a system call and compiled the kernel succesfully...
my system call is in a file in the kernel folder named my_syscall1.c (kernel/my_syscall1.c)
the header file for this system call i added it in the folder include like this include/my_syscall1/my_syscall1.h
my problem is... (2 Replies)
Discussion started by: demis87
2 Replies
9. Shell Programming and Scripting
Trying to figure out a load issue with a webserver. I have traced a php script and noticed the following
connect(4, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("XX.XX.XX.XX")}, 16) = -1 EINPROGRESS (Operation now in progress) <0.000035>
poll(, 1, 2000) = 1 () <0.000120>... (5 Replies)
Discussion started by: rajan007
5 Replies
10. OS X (Apple)
Hi all...
I am trying to create a shell project purely for this Macbook Pro.
I do NOT want to use SOX as the sampling _source_ but Quicktime
instead, the idea being that NO third party installs will be needed.
The code below works fine except the commented out Applescript line
does not do... (2 Replies)
Discussion started by: wisecracker
2 Replies
LEARN ABOUT DEBIAN
signal
signal(3tcl) signal(3tcl)
NAME
signal - dynamically loadable signal handling for Tcl/Tk
SYNOPSIS
signal (add|delete|print|version) [options]
COMMANDS
add signo proc [-async]
Adds a signal handler for signal signo through proc proc. Signals can be provided by number, or the most common ones are provided by name
(e.g., SIGHUP). The proc is any Tcl procedure, and it is evaluated when the signal comes in. It will be provided no arguments.
Signal handlers have Posix semantics - they persist until reset.
If -async is used, the signal handler is created using Tcl_AsyncCreate(). Checks for the signal are very frequent (each evaluation) using
this technique, but one doesn't know quite where evaluation is or how to handle errors in this situation. The code will evaluate the pro-
vided procedure in the current interpreter if available, and in the interpreter which added the signal handler otherwise. At least until a
better scheme is suggested.
The -async is especially useful to interrupt "runaway" procs, or to cause a quick exit; the default mechanism simply waits for another
MainLoop cycle.
signal delete signo
Restores handling of signal signo to the default ( SIG_DFL ).
signal print
Prints the handling of all signals with handlers. Formatted as
signal ----> procedure or as
signal !---> procedure
if the signal is handled asynchronously
signal print signo
Prints the procedure for handling signal signo. Prints the word UNHANDLED if no signal handler is active for that signal.
signal version
Returns the string representing the current version of the package
AUTHOR
Michael Schwartz <mschwart@nyx.net>. Tilman Kranz <tilde@tk-sls.de> patched this for wider portability on Linux
Tcl Signal Extension 1.4.0.1 Tcl signal(3tcl)