tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: No space available for static Thread Local Storage



> Date: Thu, 22 Oct 2026 23:21:08 +0200
> From: Manuel Bouyer <bouyer%antioche.eu.org@localhost>
> 
> On Thu, Oct 22, 2026 at 09:00:09PM +0000, Taylor R Campbell wrote:
> > Well, here's the difference:
> > 
> > --- readelf.mod_php82   2026-10-22 17:41:25.989146033 +0000
> > +++ readelf.mod_php84   2026-10-22 17:41:56.256975805 +0000
> > ...
> > - 0x000000000000001e (FLAGS)              STATIC_TLS
> > 
> > Why does mod_php82.so use static TLS, a.k.a. TLS model `initial-exec'?
> > 
> > As a general rule, static TLS does not work in dynamically loadable
> > objects -- hence the TLS model name `initial exec': it is only meant
> > for the initial program image on exec, not anything loaded later.
> 
> No idea; both have been built from the same pkgsrc sources with the same
> mk.conf ...

--- php82/work/php-8.2.35/TSRM/TSRM.h	2026-10-19 07:29:52.000000000 +0000
+++ php84/work/php-8.4.27/TSRM/TSRM.h	2026-10-19 14:38:59.000000000 +0000
[...]
@@ -148,7 +152,8 @@
 # define __has_attribute(x) 0
 #endif
 
-#if !__has_attribute(tls_model) || defined(__FreeBSD__) || defined(__MUSL__) || defined(__HAIKU__)
+#if !__has_attribute(tls_model) || defined(__FreeBSD__) || defined(__NetBSD__) \
+	|| defined(__MUSL__) || defined(__HAIKU__) || defined(_AIX)
 # define TSRM_TLS_MODEL_ATTR
 # define TSRM_TLS_MODEL_DEFAULT
 #elif __PIC__

Patch has not been backported to php82.

See also:

PR pkg/56717: php81 and zts - No space available for static Thread
Local Storage
https://gnats.NetBSD.org/56717
https://github.com/php/php-src/commit/2d6bd1644d104fe934a5117d232d3f50ffe9ff28
lang/php83/patches/patch-TSRM_TSRM.h

Looks like an easy backport to php82 and whatever else needs it.


Home | Main Index | Thread Index | Old Index