06-07-2009
From "man attributes":
Quote:
Async-Signal-Safe
Async-Signal-Safe refers to particular library functions
that can be safely called from a signal handler. A
thread that is executing an Async-Signal-Safe function
will not deadlock with itself if interrupted by a sig-
nal. Signals are only a problem for MT-Safe functions
that acquire locks.
Async-Signal-Safe functions are also MT-Safe. Signals
are disabled when locks are acquired in Async-Signal-
Safe functions. These signals prevent a signal handler
that might acquire the same lock from being called.
Your code is doing a popen() in your SEGV signal handler. From "man popen":
Quote:
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | See below. |
|_____________________________|_____________________________|
| MT-Level | Safe |
|_____________________________|_____________________________|
The F character in the mode argument of popen() is Evolving.
In all other respects this function is Standard. The
pclose() function is Standard.
So, popen() is not async-signal safe. Hence your deadlock.
The fact that it works on other servers does not make it correct.
Of cource, fixing this deadlock isn't going to fix your code. You still have the SEGV in free() to deal with. That's almost certainly caused by application code corrupting the memory heap by overwriting dynamically-allocated memory or passing an improper pointer to a dynamic memory routine such as free().
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 PLAN9
thr_kill
thr_kill(3C) thr_kill(3C)
NAME
thr_kill - send a signal to a thread
SYNOPSIS
cc -mt [ flag... ] file... [ library... ]
#include <signal.h>
#include <thread.h>
int thr_kill(thread_t thread, int sig);
The thr_kill() function sends the sig signal to the thread designated by thread. The thread argument must be a member of the same process
as the calling thread. The sig argument must be one of the signals listed in signal.h(3HEAD), with the exception of SIGCANCEL being
reserved and off limits to thr_kill(). If sig is 0, a validity check is done for the existence of the target thread; no signal is sent.
Upon successful completion, thr_kill() returns 0. Otherwise, an error number is returned. In the event of failure, no signal is sent.
The thr_kill() function will fail if:
EINVAL The sig argument value is not zero and is an invalid or an unsupported signal number.
ESRCH No thread was found that corresponded to the thread designated by thread ID.
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|MT-Level |Async-Signal-Safe |
+-----------------------------+-----------------------------+
kill(2), sigaction(2), raise(3C), signal.h(3HEAD), thr_self(3C), attributes(5), standards(5)
23 Mar 2005 thr_kill(3C)