Sponsored Content
Top Forums Programming C++ application halts at popen system call Post 302323368 by achenle on Sunday 7th of June 2009 07:20:07 AM
Old 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

Formatted piping popen() system call

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

how to differentiate system call from library call

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

c system call

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

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

C:system call

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

socket system call can not succedd right after application crash.

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

question about system and popen in C

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

need help with system call

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

system call

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)

Applescript application call problem...

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
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)
All times are GMT -4. The time now is 03:54 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy