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;
}







0















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().




  1. spawn a thread, which runs into while loop.(i have added cancel state=Enabled and cancel type=asynchronous + cancellation points are also considered)

  2. override fork() with pthread_atfork().

  3. when fork() system call is executed, prepare-function cancels the running thread with pthread_cancel and pthread_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





  1. pthread_cancel() is it safe to call?

  2. with cancel state = enabled and type asynchronous, does pthread_cancel() cancel thread immediately?

  3. Or is there any alternate way to cancel the thread?










share|improve this question

























  • 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


















0















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().




  1. spawn a thread, which runs into while loop.(i have added cancel state=Enabled and cancel type=asynchronous + cancellation points are also considered)

  2. override fork() with pthread_atfork().

  3. when fork() system call is executed, prepare-function cancels the running thread with pthread_cancel and pthread_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





  1. pthread_cancel() is it safe to call?

  2. with cancel state = enabled and type asynchronous, does pthread_cancel() cancel thread immediately?

  3. Or is there any alternate way to cancel the thread?










share|improve this question

























  • 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














0












0








0








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().




  1. spawn a thread, which runs into while loop.(i have added cancel state=Enabled and cancel type=asynchronous + cancellation points are also considered)

  2. override fork() with pthread_atfork().

  3. when fork() system call is executed, prepare-function cancels the running thread with pthread_cancel and pthread_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





  1. pthread_cancel() is it safe to call?

  2. with cancel state = enabled and type asynchronous, does pthread_cancel() cancel thread immediately?

  3. Or is there any alternate way to cancel the thread?










share|improve this question
















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().




  1. spawn a thread, which runs into while loop.(i have added cancel state=Enabled and cancel type=asynchronous + cancellation points are also considered)

  2. override fork() with pthread_atfork().

  3. when fork() system call is executed, prepare-function cancels the running thread with pthread_cancel and pthread_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





  1. pthread_cancel() is it safe to call?

  2. with cancel state = enabled and type asynchronous, does pthread_cancel() cancel thread immediately?

  3. Or is there any alternate way to cancel the thread?







multithreading pthreads pthread-join






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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



















  • 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












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
});


}
});














draft saved

draft discarded


















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
















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

Calculate evaluation metrics using cross_val_predict sklearn

Insert data from modal to MySQL (multiple modal on website)