linux-man.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] exit.3: ATTRIBUTES: Note function that is not thread-safe
@ 2013-05-03  9:18 Peng Haitao
       [not found] ` <1367572694-21931-1-git-send-email-penght-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Peng Haitao @ 2013-05-03  9:18 UTC (permalink / raw)
  To: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w
  Cc: linux-man-u79uwXL29TY76Z2rM5mHXA, carlos-v2tUB8YBRSi3e3T8WW9gsA,
	aoliva-H+wXaHxf7aLQT0dZR+AlfA

The function exit() is not thread safe.

Signed-off-by: Peng Haitao <penght-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
---
 man3/exit.3 | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/man3/exit.3 b/man3/exit.3
index 51163e4..5e607b1 100644
--- a/man3/exit.3
+++ b/man3/exit.3
@@ -87,6 +87,11 @@ termination, respectively.
 The
 .BR exit ()
 function does not return.
+.SH ATTRIBUTES
+.SS Multithreading (see pthreads(7))
+The
+.BR exit ()
+uses a global variable that is not protected, so it is not thread-safe.
 .SH CONFORMING TO
 SVr4, 4.3BSD, POSIX.1-2001, C89, C99.
 .SH NOTES
-- 
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] exit.3: ATTRIBUTES: Note function that is not thread-safe
       [not found] ` <1367572694-21931-1-git-send-email-penght-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
@ 2013-05-18 18:30   ` Michael Kerrisk
       [not found]     ` <5197C8C4.3060205-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Michael Kerrisk @ 2013-05-18 18:30 UTC (permalink / raw)
  To: Peng Haitao
  Cc: linux-man-u79uwXL29TY76Z2rM5mHXA, carlos-v2tUB8YBRSi3e3T8WW9gsA,
	aoliva-H+wXaHxf7aLQT0dZR+AlfA

Hello Peng,

NOTE: I have not yet applied this patch. See comments below.

On 05/03/13 11:18, Peng Haitao wrote:
> The function exit() is not thread safe.
> 
> Signed-off-by: Peng Haitao <penght-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
> ---
>  man3/exit.3 | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/man3/exit.3 b/man3/exit.3
> index 51163e4..5e607b1 100644
> --- a/man3/exit.3
> +++ b/man3/exit.3
> @@ -87,6 +87,11 @@ termination, respectively.
>  The
>  .BR exit ()
>  function does not return.
> +.SH ATTRIBUTES
> +.SS Multithreading (see pthreads(7))
> +The
> +.BR exit ()
> +uses a global variable that is not protected, so it is not thread-safe.

Ouch! Really? so one cannot call exit(3) from a multithreaded program?
This seems a clear violation of the standard. 

Could you provide some pointers to more information on this point (e.g., URL
of mail thread archive discussions.)

Thanks,

Michael

--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] exit.3: ATTRIBUTES: Note function that is not thread-safe
       [not found]     ` <5197C8C4.3060205-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2013-05-20  2:30       ` Peng Haitao
       [not found]         ` <51998AC5.3070803-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Peng Haitao @ 2013-05-20  2:30 UTC (permalink / raw)
  To: Michael Kerrisk
  Cc: linux-man-u79uwXL29TY76Z2rM5mHXA, carlos-v2tUB8YBRSi3e3T8WW9gsA,
	aoliva-H+wXaHxf7aLQT0dZR+AlfA

[-- Attachment #1: Type: text/plain, Size: 790 bytes --]


On 05/19/2013 02:30 AM, Michael Kerrisk wrote:
> 
> Ouch! Really? so one cannot call exit(3) from a multithreaded program?
> This seems a clear violation of the standard. 
> 

Yes.
I make a test program to test exit(3) which is not thread-safe.

$ gcc -o exit exit.c -lpthread
$ ./exit
Goodbye.
...
Goodbye.
Segmentation fault

> Could you provide some pointers to more information on this point (e.g., URL
> of mail thread archive discussions.)
> 

http://sourceware.org/ml/libc-alpha/2013-03/msg00004.html


-- 
Best Regards,
Peng

> Thanks,
> 
> Michael
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-man" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


[-- Attachment #2: exit.c --]
[-- Type: text/plain, Size: 508 bytes --]

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>

long long int i = 0;

static void bye (void)
{
	printf ("Goodbye.\n");
}

void *thread_severity()
{
	while (1) {
		atexit(bye);
		i++;
		if ( i >= 1000000) {
			printf("i is enough.\n");
			return NULL;
		}
	}

	return NULL;
}

int main (void)
{
	pthread_t thread_severity_id, thread_fmtmsg_id;

	pthread_create(&thread_fmtmsg_id, NULL, thread_severity, NULL);

	while(1) {
		if (i >= 500000)
			exit(0);
		usleep(1000);
	}
}


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] exit.3: ATTRIBUTES: Note function that is not thread-safe
       [not found]         ` <51998AC5.3070803-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
@ 2014-03-25  2:56           ` penght-BthXqXjhjHXQFUHtdCDX3A
  0 siblings, 0 replies; 4+ messages in thread
From: penght-BthXqXjhjHXQFUHtdCDX3A @ 2014-03-25  2:56 UTC (permalink / raw)
  To: Michael Kerrisk
  Cc: linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	carlos-v2tUB8YBRSi3e3T8WW9gsA@public.gmane.org,
	aoliva-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org


On 05/20/2013 10:30 AM, Peng Haitao wrote:
> 
> On 05/19/2013 02:30 AM, Michael Kerrisk wrote:
>>
>> Ouch! Really? so one cannot call exit(3) from a multithreaded program?
>> This seems a clear violation of the standard. 
>>
> 
> Yes.
> I make a test program to test exit(3) which is not thread-safe.
> 
> $ gcc -o exit exit.c -lpthread
> $ ./exit
> Goodbye.
> ...
> Goodbye.
> Segmentation fault
> 
>> Could you provide some pointers to more information on this point (e.g., URL
>> of mail thread archive discussions.)
>>
> 

In glibc manual, exit() is also MT-Unsafe.
I will send v2 patch with update the date in the TH line.

http://www.gnu.org/software/libc/manual/html_mono/libc.html#Normal-Termination


-- 
Best Regards,
Peng

> http://sourceware.org/ml/libc-alpha/2013-03/msg00004.html
> 
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-03-25  2:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-03  9:18 [PATCH] exit.3: ATTRIBUTES: Note function that is not thread-safe Peng Haitao
     [not found] ` <1367572694-21931-1-git-send-email-penght-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2013-05-18 18:30   ` Michael Kerrisk
     [not found]     ` <5197C8C4.3060205-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-05-20  2:30       ` Peng Haitao
     [not found]         ` <51998AC5.3070803-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2014-03-25  2:56           ` penght-BthXqXjhjHXQFUHtdCDX3A

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).