Message ID | 1adc193aeb267bdb147428b747e66c77cfd447d0.1666877952.git.szabolcs.nagy@arm.com |
---|---|
State | New |
Headers | show |
Series | patches from the morello port | expand |
* Szabolcs Nagy via Libc-alpha: > The test dlmopens 10 namespaces recursively, which requires a glibc > tunable setting, otherwise it may run out of static TLS. > --- > elf/Makefile | 1 + > elf/tst-dlmopen-twice.c | 2 +- > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/elf/Makefile b/elf/Makefile > index 7b50ccc07a..ace15dc11b 100644 > --- a/elf/Makefile > +++ b/elf/Makefile > @@ -2969,6 +2969,7 @@ tst-audit-tlsdesc-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so > $(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-auditmod-tlsdesc.so > tst-audit-tlsdesc-dlopen-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so > > +tst-dlmopen-twice-ENV = GLIBC_TUNABLES=glibc.rtld.nns=10 > $(objpfx)tst-dlmopen-twice.out: \ > $(objpfx)tst-dlmopen-twice-mod1.so \ > $(objpfx)tst-dlmopen-twice-mod2.so > diff --git a/elf/tst-dlmopen-twice.c b/elf/tst-dlmopen-twice.c > index 70c71fe19c..dfa58b1505 100644 > --- a/elf/tst-dlmopen-twice.c > +++ b/elf/tst-dlmopen-twice.c > @@ -46,7 +46,7 @@ do_test (void) > recurse (1); > > /* Then with nesting. The constant needs to be less than the > - internal DL_NNS namespace constant. */ > + glibc.rtld.nns tunable (which is between 1 and DL_NNS). */ > recurse (10); > return 0; > } This doesn't work if configured with --disable-tunables. I suspect this is merely a symptom. The static TLS sizing defaults should allow creating DL_NNS namespaces? Thanks, Florian
The 10/27/2022 18:24, Florian Weimer wrote: > * Szabolcs Nagy via Libc-alpha: > > > The test dlmopens 10 namespaces recursively, which requires a glibc > > tunable setting, otherwise it may run out of static TLS. > > --- > > elf/Makefile | 1 + > > elf/tst-dlmopen-twice.c | 2 +- > > 2 files changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/elf/Makefile b/elf/Makefile > > index 7b50ccc07a..ace15dc11b 100644 > > --- a/elf/Makefile > > +++ b/elf/Makefile > > @@ -2969,6 +2969,7 @@ tst-audit-tlsdesc-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so > > $(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-auditmod-tlsdesc.so > > tst-audit-tlsdesc-dlopen-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so > > > > +tst-dlmopen-twice-ENV = GLIBC_TUNABLES=glibc.rtld.nns=10 > > $(objpfx)tst-dlmopen-twice.out: \ > > $(objpfx)tst-dlmopen-twice-mod1.so \ > > $(objpfx)tst-dlmopen-twice-mod2.so > > diff --git a/elf/tst-dlmopen-twice.c b/elf/tst-dlmopen-twice.c > > index 70c71fe19c..dfa58b1505 100644 > > --- a/elf/tst-dlmopen-twice.c > > +++ b/elf/tst-dlmopen-twice.c > > @@ -46,7 +46,7 @@ do_test (void) > > recurse (1); > > > > /* Then with nesting. The constant needs to be less than the > > - internal DL_NNS namespace constant. */ > > + glibc.rtld.nns tunable (which is between 1 and DL_NNS). */ > > recurse (10); > > return 0; > > } > > This doesn't work if configured with --disable-tunables. > > I suspect this is merely a symptom. The static TLS sizing defaults > should allow creating DL_NNS namespaces? the tunable defaults to 4, DL_NNS is 16 and that's the max value of the tunable (since that's the static namespace array size)
On 27/10/22 13:24, Florian Weimer via Libc-alpha wrote: > * Szabolcs Nagy via Libc-alpha: > >> The test dlmopens 10 namespaces recursively, which requires a glibc >> tunable setting, otherwise it may run out of static TLS. >> --- >> elf/Makefile | 1 + >> elf/tst-dlmopen-twice.c | 2 +- >> 2 files changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/elf/Makefile b/elf/Makefile >> index 7b50ccc07a..ace15dc11b 100644 >> --- a/elf/Makefile >> +++ b/elf/Makefile >> @@ -2969,6 +2969,7 @@ tst-audit-tlsdesc-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so >> $(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-auditmod-tlsdesc.so >> tst-audit-tlsdesc-dlopen-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so >> >> +tst-dlmopen-twice-ENV = GLIBC_TUNABLES=glibc.rtld.nns=10 >> $(objpfx)tst-dlmopen-twice.out: \ >> $(objpfx)tst-dlmopen-twice-mod1.so \ >> $(objpfx)tst-dlmopen-twice-mod2.so >> diff --git a/elf/tst-dlmopen-twice.c b/elf/tst-dlmopen-twice.c >> index 70c71fe19c..dfa58b1505 100644 >> --- a/elf/tst-dlmopen-twice.c >> +++ b/elf/tst-dlmopen-twice.c >> @@ -46,7 +46,7 @@ do_test (void) >> recurse (1); >> >> /* Then with nesting. The constant needs to be less than the >> - internal DL_NNS namespace constant. */ >> + glibc.rtld.nns tunable (which is between 1 and DL_NNS). */ >> recurse (10); >> return 0; >> } > > This doesn't work if configured with --disable-tunables. > > I suspect this is merely a symptom. The static TLS sizing defaults > should allow creating DL_NNS namespaces? Another question would be whether if we should keep --disable-tunables option.
* Szabolcs Nagy: > The 10/27/2022 18:24, Florian Weimer wrote: >> * Szabolcs Nagy via Libc-alpha: >> >> > The test dlmopens 10 namespaces recursively, which requires a glibc >> > tunable setting, otherwise it may run out of static TLS. >> > --- >> > elf/Makefile | 1 + >> > elf/tst-dlmopen-twice.c | 2 +- >> > 2 files changed, 2 insertions(+), 1 deletion(-) >> > >> > diff --git a/elf/Makefile b/elf/Makefile >> > index 7b50ccc07a..ace15dc11b 100644 >> > --- a/elf/Makefile >> > +++ b/elf/Makefile >> > @@ -2969,6 +2969,7 @@ tst-audit-tlsdesc-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so >> > $(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-auditmod-tlsdesc.so >> > tst-audit-tlsdesc-dlopen-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so >> > >> > +tst-dlmopen-twice-ENV = GLIBC_TUNABLES=glibc.rtld.nns=10 >> > $(objpfx)tst-dlmopen-twice.out: \ >> > $(objpfx)tst-dlmopen-twice-mod1.so \ >> > $(objpfx)tst-dlmopen-twice-mod2.so >> > diff --git a/elf/tst-dlmopen-twice.c b/elf/tst-dlmopen-twice.c >> > index 70c71fe19c..dfa58b1505 100644 >> > --- a/elf/tst-dlmopen-twice.c >> > +++ b/elf/tst-dlmopen-twice.c >> > @@ -46,7 +46,7 @@ do_test (void) >> > recurse (1); >> > >> > /* Then with nesting. The constant needs to be less than the >> > - internal DL_NNS namespace constant. */ >> > + glibc.rtld.nns tunable (which is between 1 and DL_NNS). */ >> > recurse (10); >> > return 0; >> > } >> >> This doesn't work if configured with --disable-tunables. >> >> I suspect this is merely a symptom. The static TLS sizing defaults >> should allow creating DL_NNS namespaces? > > the tunable defaults to 4, DL_NNS is 16 and that's the max value > of the tunable (since that's the static namespace array size) Maybe we should lower the constant from 10 to 3 then? I mistakenly assumed the namespace count was higher than it actually is. 3 should not yet invalidate the test. Thanks, Florian
diff --git a/elf/Makefile b/elf/Makefile index 7b50ccc07a..ace15dc11b 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -2969,6 +2969,7 @@ tst-audit-tlsdesc-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so $(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-auditmod-tlsdesc.so tst-audit-tlsdesc-dlopen-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so +tst-dlmopen-twice-ENV = GLIBC_TUNABLES=glibc.rtld.nns=10 $(objpfx)tst-dlmopen-twice.out: \ $(objpfx)tst-dlmopen-twice-mod1.so \ $(objpfx)tst-dlmopen-twice-mod2.so diff --git a/elf/tst-dlmopen-twice.c b/elf/tst-dlmopen-twice.c index 70c71fe19c..dfa58b1505 100644 --- a/elf/tst-dlmopen-twice.c +++ b/elf/tst-dlmopen-twice.c @@ -46,7 +46,7 @@ do_test (void) recurse (1); /* Then with nesting. The constant needs to be less than the - internal DL_NNS namespace constant. */ + glibc.rtld.nns tunable (which is between 1 and DL_NNS). */ recurse (10); return 0; }