Module Name: src Committed By: martin Date: Sat Jul 20 15:36:52 UTC 2024
Modified Files: src/lib/libpthread [netbsd-10]: pthread_attr_getguardsize.3 pthread_attr_getstack.3 Log Message: Pull up following revision(s) (requested by rin in ticket #758): lib/libpthread/pthread_attr_getstack.3: revision 1.9 lib/libpthread/pthread_attr_getguardsize.3: revision 1.6 pthread: Document the setstack vs setguardsize bug. Suggest the safe, compatible workaround. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.5.14.1 src/lib/libpthread/pthread_attr_getguardsize.3 cvs rdiff -u -r1.8 -r1.8.14.1 src/lib/libpthread/pthread_attr_getstack.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libpthread/pthread_attr_getguardsize.3 diff -u src/lib/libpthread/pthread_attr_getguardsize.3:1.5 src/lib/libpthread/pthread_attr_getguardsize.3:1.5.14.1 --- src/lib/libpthread/pthread_attr_getguardsize.3:1.5 Sun Oct 22 16:37:24 2017 +++ src/lib/libpthread/pthread_attr_getguardsize.3 Sat Jul 20 15:36:52 2024 @@ -1,4 +1,4 @@ -.\" $NetBSD: pthread_attr_getguardsize.3,v 1.5 2017/10/22 16:37:24 abhinav Exp $ +.\" $NetBSD: pthread_attr_getguardsize.3,v 1.5.14.1 2024/07/20 15:36:52 martin Exp $ .\" .\" Copyright (c) 2010 Jukka Ruohonen <jruoho...@iki.fi> .\" All rights reserved. @@ -123,3 +123,27 @@ There was insufficient memory. .Sh STANDARDS Both functions conform to .St -p1003.1-2008 . +.Sh BUGS +Older versions of +.Nx , +prior to 10.0, 9.4, and 8.3, incorrectly adjust the stack address by +the guard size in threads configured with +.Xr pthread_attr_setstack 3 , +instead of ignoring the guard size in that case as +.Tn POSIX +prescribes +.Po +see +.Lk https://gnats.NetBSD.org/57721 "PR lib/57721" +.Pc . +.Pp +Even if you didn't set a nonzero guard size with +.Fn pthread_attr_setguardsize , +the system will choose a nonzero default guard size. +.Pp +To work around this in applications that run on older and newer +versions of +.Nx , +as well as on other operating systems, you can safely set the guard +size to zero: +.Dl "pthread_attr_setguardsize(&attr, 0);" Index: src/lib/libpthread/pthread_attr_getstack.3 diff -u src/lib/libpthread/pthread_attr_getstack.3:1.8 src/lib/libpthread/pthread_attr_getstack.3:1.8.14.1 --- src/lib/libpthread/pthread_attr_getstack.3:1.8 Mon Oct 23 01:03:23 2017 +++ src/lib/libpthread/pthread_attr_getstack.3 Sat Jul 20 15:36:52 2024 @@ -1,4 +1,4 @@ -.\" $NetBSD: pthread_attr_getstack.3,v 1.8 2017/10/23 01:03:23 wiz Exp $ +.\" $NetBSD: pthread_attr_getstack.3,v 1.8.14.1 2024/07/20 15:36:52 martin Exp $ .\" .\" Copyright (c) 2010 Jukka Ruohonen <jruoho...@iki.fi> .\" All rights reserved. @@ -177,3 +177,27 @@ and were however removed from the specification in the .St -p1003.1-2008 revision. +.Sh BUGS +Older versions of +.Nx , +prior to 10.0, 9.4, and 8.3, incorrectly adjust the stack address by +the guard size in threads configured with +.Fn pthread_attr_setstack , +instead of ignoring the guard size in that case as +.Tn POSIX +prescribes +.Po +see +.Lk https://gnats.NetBSD.org/57721 "PR lib/57721" +.Pc . +.Pp +Even if you didn't set a nonzero guard size with +.Xr pthread_attr_setguardsize 3 , +the system will choose a nonzero default guard size. +.Pp +To work around this in applications that run on older and newer +versions of +.Nx , +as well as on other operating systems, you can safely set the guard +size to zero: +.Dl "pthread_attr_setguardsize(&attr, 0);"