after pthread_cancel(), pthread_join() function call hangup
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I have written an application, which creates a thread and runs into while loop.
In the application after spawning a thread, i have overridden the fork()
syscall with pthread_atfork()
.
[when fork
is called, a prepare
function call is called which cancels the thread and after the child process is spawned the same thread is spawned again.]
I have problem in the above logic, when the same code is compiled to different target, there is hangup in pthread_join()
.
- spawn a thread, which runs into while loop.(i have added cancel state=Enabled and cancel type=asynchronous + cancellation points are also considered)
- override
fork()
withpthread_atfork()
. - when
fork()
system call is executed, prepare-function cancels the running thread withpthread_cancel
andpthread_join()
is applied to check the thread is terminated.
Here the problem occurs, the pthread_join()
doesn't return.
the above behavior is observed in one particular target environment.
I have some doubt
pthread_cancel()
is it safe to call?- with cancel state = enabled and type asynchronous, does
pthread_cancel()
cancel thread immediately? - Or is there any alternate way to cancel the thread?
multithreading pthreads pthread-join
add a comment |
I have written an application, which creates a thread and runs into while loop.
In the application after spawning a thread, i have overridden the fork()
syscall with pthread_atfork()
.
[when fork
is called, a prepare
function call is called which cancels the thread and after the child process is spawned the same thread is spawned again.]
I have problem in the above logic, when the same code is compiled to different target, there is hangup in pthread_join()
.
- spawn a thread, which runs into while loop.(i have added cancel state=Enabled and cancel type=asynchronous + cancellation points are also considered)
- override
fork()
withpthread_atfork()
. - when
fork()
system call is executed, prepare-function cancels the running thread withpthread_cancel
andpthread_join()
is applied to check the thread is terminated.
Here the problem occurs, the pthread_join()
doesn't return.
the above behavior is observed in one particular target environment.
I have some doubt
pthread_cancel()
is it safe to call?- with cancel state = enabled and type asynchronous, does
pthread_cancel()
cancel thread immediately? - Or is there any alternate way to cancel the thread?
multithreading pthreads pthread-join
Best to provide a Minimal, Complete, and Verifiable example. It's a little difficult to follow exactly what you're doing and therefore to guess what might be going wrong without seeing your code.
– Gil Hamilton
Nov 29 '18 at 18:34
Thank you for your response.I have debugged the program, what i have observed is, this hangup occurs in pthread.so 2.26 version of glibc. when the same is executed in pthread.so 2.24 or 2.23 issue is not reproducible.
– Sachin S Shetty
Dec 9 '18 at 9:14
@GilHamilton: Problem Statement as follows: 1) Main Program spawn a thread say it "Threadrun_Infinite". 2) Call a system call pthread_atfork(kill-Threadrun_Infinite, NULL, NULL) In the "kill-Threadrun-Infinite" you will be sending pthread_cancel to running thread i.e created in step 1 and will do a pthread_join() to confirm the thread is terminated. 3) execute sys_call fork() -> when this
– Sachin S Shetty
Dec 9 '18 at 9:18
@GilHamilton 3) execute sys_call fork() -> when this system call is executed, the pre-function "kill-Threadrun_infinite " is called . the problem is pthread_cancel is successful but the pthread_join() hang's up(its in a mutex wait).. this behaviour is observed in pthread.so 2.26. pleas e help??
– Sachin S Shetty
Dec 9 '18 at 9:27
You still have not provided a Minimal, Complete, and Verifiable example.
– Gil Hamilton
Dec 9 '18 at 20:10
add a comment |
I have written an application, which creates a thread and runs into while loop.
In the application after spawning a thread, i have overridden the fork()
syscall with pthread_atfork()
.
[when fork
is called, a prepare
function call is called which cancels the thread and after the child process is spawned the same thread is spawned again.]
I have problem in the above logic, when the same code is compiled to different target, there is hangup in pthread_join()
.
- spawn a thread, which runs into while loop.(i have added cancel state=Enabled and cancel type=asynchronous + cancellation points are also considered)
- override
fork()
withpthread_atfork()
. - when
fork()
system call is executed, prepare-function cancels the running thread withpthread_cancel
andpthread_join()
is applied to check the thread is terminated.
Here the problem occurs, the pthread_join()
doesn't return.
the above behavior is observed in one particular target environment.
I have some doubt
pthread_cancel()
is it safe to call?- with cancel state = enabled and type asynchronous, does
pthread_cancel()
cancel thread immediately? - Or is there any alternate way to cancel the thread?
multithreading pthreads pthread-join
I have written an application, which creates a thread and runs into while loop.
In the application after spawning a thread, i have overridden the fork()
syscall with pthread_atfork()
.
[when fork
is called, a prepare
function call is called which cancels the thread and after the child process is spawned the same thread is spawned again.]
I have problem in the above logic, when the same code is compiled to different target, there is hangup in pthread_join()
.
- spawn a thread, which runs into while loop.(i have added cancel state=Enabled and cancel type=asynchronous + cancellation points are also considered)
- override
fork()
withpthread_atfork()
. - when
fork()
system call is executed, prepare-function cancels the running thread withpthread_cancel
andpthread_join()
is applied to check the thread is terminated.
Here the problem occurs, the pthread_join()
doesn't return.
the above behavior is observed in one particular target environment.
I have some doubt
pthread_cancel()
is it safe to call?- with cancel state = enabled and type asynchronous, does
pthread_cancel()
cancel thread immediately? - Or is there any alternate way to cancel the thread?
multithreading pthreads pthread-join
multithreading pthreads pthread-join
edited Nov 29 '18 at 18:32
Gil Hamilton
9,1241741
9,1241741
asked Nov 29 '18 at 5:15
Sachin S ShettySachin S Shetty
11
11
Best to provide a Minimal, Complete, and Verifiable example. It's a little difficult to follow exactly what you're doing and therefore to guess what might be going wrong without seeing your code.
– Gil Hamilton
Nov 29 '18 at 18:34
Thank you for your response.I have debugged the program, what i have observed is, this hangup occurs in pthread.so 2.26 version of glibc. when the same is executed in pthread.so 2.24 or 2.23 issue is not reproducible.
– Sachin S Shetty
Dec 9 '18 at 9:14
@GilHamilton: Problem Statement as follows: 1) Main Program spawn a thread say it "Threadrun_Infinite". 2) Call a system call pthread_atfork(kill-Threadrun_Infinite, NULL, NULL) In the "kill-Threadrun-Infinite" you will be sending pthread_cancel to running thread i.e created in step 1 and will do a pthread_join() to confirm the thread is terminated. 3) execute sys_call fork() -> when this
– Sachin S Shetty
Dec 9 '18 at 9:18
@GilHamilton 3) execute sys_call fork() -> when this system call is executed, the pre-function "kill-Threadrun_infinite " is called . the problem is pthread_cancel is successful but the pthread_join() hang's up(its in a mutex wait).. this behaviour is observed in pthread.so 2.26. pleas e help??
– Sachin S Shetty
Dec 9 '18 at 9:27
You still have not provided a Minimal, Complete, and Verifiable example.
– Gil Hamilton
Dec 9 '18 at 20:10
add a comment |
Best to provide a Minimal, Complete, and Verifiable example. It's a little difficult to follow exactly what you're doing and therefore to guess what might be going wrong without seeing your code.
– Gil Hamilton
Nov 29 '18 at 18:34
Thank you for your response.I have debugged the program, what i have observed is, this hangup occurs in pthread.so 2.26 version of glibc. when the same is executed in pthread.so 2.24 or 2.23 issue is not reproducible.
– Sachin S Shetty
Dec 9 '18 at 9:14
@GilHamilton: Problem Statement as follows: 1) Main Program spawn a thread say it "Threadrun_Infinite". 2) Call a system call pthread_atfork(kill-Threadrun_Infinite, NULL, NULL) In the "kill-Threadrun-Infinite" you will be sending pthread_cancel to running thread i.e created in step 1 and will do a pthread_join() to confirm the thread is terminated. 3) execute sys_call fork() -> when this
– Sachin S Shetty
Dec 9 '18 at 9:18
@GilHamilton 3) execute sys_call fork() -> when this system call is executed, the pre-function "kill-Threadrun_infinite " is called . the problem is pthread_cancel is successful but the pthread_join() hang's up(its in a mutex wait).. this behaviour is observed in pthread.so 2.26. pleas e help??
– Sachin S Shetty
Dec 9 '18 at 9:27
You still have not provided a Minimal, Complete, and Verifiable example.
– Gil Hamilton
Dec 9 '18 at 20:10
Best to provide a Minimal, Complete, and Verifiable example. It's a little difficult to follow exactly what you're doing and therefore to guess what might be going wrong without seeing your code.
– Gil Hamilton
Nov 29 '18 at 18:34
Best to provide a Minimal, Complete, and Verifiable example. It's a little difficult to follow exactly what you're doing and therefore to guess what might be going wrong without seeing your code.
– Gil Hamilton
Nov 29 '18 at 18:34
Thank you for your response.I have debugged the program, what i have observed is, this hangup occurs in pthread.so 2.26 version of glibc. when the same is executed in pthread.so 2.24 or 2.23 issue is not reproducible.
– Sachin S Shetty
Dec 9 '18 at 9:14
Thank you for your response.I have debugged the program, what i have observed is, this hangup occurs in pthread.so 2.26 version of glibc. when the same is executed in pthread.so 2.24 or 2.23 issue is not reproducible.
– Sachin S Shetty
Dec 9 '18 at 9:14
@GilHamilton: Problem Statement as follows: 1) Main Program spawn a thread say it "Threadrun_Infinite". 2) Call a system call pthread_atfork(kill-Threadrun_Infinite, NULL, NULL) In the "kill-Threadrun-Infinite" you will be sending pthread_cancel to running thread i.e created in step 1 and will do a pthread_join() to confirm the thread is terminated. 3) execute sys_call fork() -> when this
– Sachin S Shetty
Dec 9 '18 at 9:18
@GilHamilton: Problem Statement as follows: 1) Main Program spawn a thread say it "Threadrun_Infinite". 2) Call a system call pthread_atfork(kill-Threadrun_Infinite, NULL, NULL) In the "kill-Threadrun-Infinite" you will be sending pthread_cancel to running thread i.e created in step 1 and will do a pthread_join() to confirm the thread is terminated. 3) execute sys_call fork() -> when this
– Sachin S Shetty
Dec 9 '18 at 9:18
@GilHamilton 3) execute sys_call fork() -> when this system call is executed, the pre-function "kill-Threadrun_infinite " is called . the problem is pthread_cancel is successful but the pthread_join() hang's up(its in a mutex wait).. this behaviour is observed in pthread.so 2.26. pleas e help??
– Sachin S Shetty
Dec 9 '18 at 9:27
@GilHamilton 3) execute sys_call fork() -> when this system call is executed, the pre-function "kill-Threadrun_infinite " is called . the problem is pthread_cancel is successful but the pthread_join() hang's up(its in a mutex wait).. this behaviour is observed in pthread.so 2.26. pleas e help??
– Sachin S Shetty
Dec 9 '18 at 9:27
You still have not provided a Minimal, Complete, and Verifiable example.
– Gil Hamilton
Dec 9 '18 at 20:10
You still have not provided a Minimal, Complete, and Verifiable example.
– Gil Hamilton
Dec 9 '18 at 20:10
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53532288%2fafter-pthread-cancel-pthread-join-function-call-hangup%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53532288%2fafter-pthread-cancel-pthread-join-function-call-hangup%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Best to provide a Minimal, Complete, and Verifiable example. It's a little difficult to follow exactly what you're doing and therefore to guess what might be going wrong without seeing your code.
– Gil Hamilton
Nov 29 '18 at 18:34
Thank you for your response.I have debugged the program, what i have observed is, this hangup occurs in pthread.so 2.26 version of glibc. when the same is executed in pthread.so 2.24 or 2.23 issue is not reproducible.
– Sachin S Shetty
Dec 9 '18 at 9:14
@GilHamilton: Problem Statement as follows: 1) Main Program spawn a thread say it "Threadrun_Infinite". 2) Call a system call pthread_atfork(kill-Threadrun_Infinite, NULL, NULL) In the "kill-Threadrun-Infinite" you will be sending pthread_cancel to running thread i.e created in step 1 and will do a pthread_join() to confirm the thread is terminated. 3) execute sys_call fork() -> when this
– Sachin S Shetty
Dec 9 '18 at 9:18
@GilHamilton 3) execute sys_call fork() -> when this system call is executed, the pre-function "kill-Threadrun_infinite " is called . the problem is pthread_cancel is successful but the pthread_join() hang's up(its in a mutex wait).. this behaviour is observed in pthread.so 2.26. pleas e help??
– Sachin S Shetty
Dec 9 '18 at 9:27
You still have not provided a Minimal, Complete, and Verifiable example.
– Gil Hamilton
Dec 9 '18 at 20:10