FAIL: elf/tst-gnu2-tls2
indicates that your _dl_tlsdesc_dynamic may not preserve all caller-saved registers. Please find out how the test fails.
H.J. ---------- Forwarded message --------- From: ci_notify@linaro.org Date: Wed, Feb 14, 2024 at 3:50 PM Subject: [Linaro-TCWG-CI] glibc patch #85585: FAIL: 1 regressions on arm To: hjl.tools@gmail.com
Dear contributor, our automatic CI has detected problems related to your patch(es). Please find some details below. If you have any questions, please follow up on linaro-toolchain@lists.linaro.org mailing list, Libera's #linaro-tcwg channel, or ping your favourite Linaro toolchain developer on the usual project channel.
We appreciate that it might be difficult to find the necessary logs or reproduce the issue locally. If you can't get what you need from our CI within minutes, let us know and we will be happy to help.
In glibc_check master-arm after:
| glibc patch https://patchwork.sourceware.org/patch/85585 | Author: H.J. Lu hjl.tools@gmail.com | Date: Sun Feb 11 19:19:49 2024 -0800 | | x86-64: Update _dl_tlsdesc_dynamic to preserve vector registers | | Compiler generates the following instruction sequence for GNU2 dynamic | TLS access: | | leaq tls_var@TLSDESC(%rip), %rax | call *tls_var@TLSCALL(%rax) | ... 13 lines of the commit log omitted. | ... applied on top of baseline commit: | dbae3a3940 trivial doc fix: remove weird phrase "syscall takes zero to five arguments"
FAIL: 1 regressions
regressions.sum: === glibc tests ===
Running glibc:elf ... FAIL: elf/tst-gnu2-tls2
You can find the failure logs in *.log.1.xz files in - https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa... The full lists of regressions and progressions as well as configure and make commands are in - https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa... The list of [ignored] baseline and flaky failures are in - https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa...
The configuration of this build is: CI config tcwg_glibc_check master-arm
-----------------8<--------------------------8<--------------------------8<-------------------------- The information below can be used to reproduce a debug environment:
Current build : https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa... Reference build : https://ci.linaro.org/job/tcwg_glibc_check--master-arm-build/953/artifact/ar...
On Feb 15, 2024, at 03:54, H.J. Lu hjl.tools@gmail.com wrote:
FAIL: elf/tst-gnu2-tls2
indicates that your _dl_tlsdesc_dynamic may not preserve all caller-saved registers. Please find out how the test fails.
Hi H.J.,
See below.
...
FAIL: 1 regressions
regressions.sum: === glibc tests ===
Running glibc:elf ... FAIL: elf/tst-gnu2-tls2
You can find the failure logs in *.log.1.xz files in
tests.log.1.xz contains output of failed tests -- https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa... === FAIL: elf/tst-gnu2-tls2 original exit status 1 open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod2.so close tst-gnu2-tls2mod0.so close tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so Didn't expect signal from child: got `Segmentation fault' ===
Let me know if you need any help investigating this.
Thanks!
-- Maxim Kuvyrkov https://www.linaro.org
On Thu, Feb 15, 2024 at 12:01 AM Maxim Kuvyrkov maxim.kuvyrkov@linaro.org wrote:
On Feb 15, 2024, at 03:54, H.J. Lu hjl.tools@gmail.com wrote:
FAIL: elf/tst-gnu2-tls2
indicates that your _dl_tlsdesc_dynamic may not preserve all caller-saved registers. Please find out how the test fails.
Hi H.J.,
See below.
...
FAIL: 1 regressions
regressions.sum: === glibc tests ===
Running glibc:elf ... FAIL: elf/tst-gnu2-tls2
You can find the failure logs in *.log.1.xz files in
tests.log.1.xz contains output of failed tests -- https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa... === FAIL: elf/tst-gnu2-tls2 original exit status 1 open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod2.so close tst-gnu2-tls2mod0.so close tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so Didn't expect signal from child: got `Segmentation fault' ===
Let me know if you need any help investigating this.
I don't have access to aarch64 machine which can build glibc. Please configure glibc with --enable-hardcoded-path-in-tests and run elf/tst-gnu2-tls2 under GDB to find out what is going on.
On 15/02/24 08:47, H.J. Lu wrote:
On Thu, Feb 15, 2024 at 12:01 AM Maxim Kuvyrkov maxim.kuvyrkov@linaro.org wrote:
On Feb 15, 2024, at 03:54, H.J. Lu hjl.tools@gmail.com wrote:
FAIL: elf/tst-gnu2-tls2
indicates that your _dl_tlsdesc_dynamic may not preserve all caller-saved registers. Please find out how the test fails.
Hi H.J.,
See below.
...
FAIL: 1 regressions
regressions.sum: === glibc tests ===
Running glibc:elf ... FAIL: elf/tst-gnu2-tls2
You can find the failure logs in *.log.1.xz files in
tests.log.1.xz contains output of failed tests -- https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa... === FAIL: elf/tst-gnu2-tls2 original exit status 1 open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod2.so close tst-gnu2-tls2mod0.so close tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so Didn't expect signal from child: got `Segmentation fault' ===
Let me know if you need any help investigating this.
I don't have access to aarch64 machine which can build glibc. Please configure glibc with --enable-hardcoded-path-in-tests and run elf/tst-gnu2-tls2 under GDB to find out what is going on.
I will check this out H.J.
On Thu, Feb 15, 2024 at 3:49 AM Adhemerval Zanella Netto adhemerval.zanella@linaro.org wrote:
On 15/02/24 08:47, H.J. Lu wrote:
On Thu, Feb 15, 2024 at 12:01 AM Maxim Kuvyrkov maxim.kuvyrkov@linaro.org wrote:
On Feb 15, 2024, at 03:54, H.J. Lu hjl.tools@gmail.com wrote:
FAIL: elf/tst-gnu2-tls2
indicates that your _dl_tlsdesc_dynamic may not preserve all caller-saved registers. Please find out how the test fails.
Hi H.J.,
See below.
...
FAIL: 1 regressions
regressions.sum: === glibc tests ===
Running glibc:elf ... FAIL: elf/tst-gnu2-tls2
You can find the failure logs in *.log.1.xz files in
tests.log.1.xz contains output of failed tests -- https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa... === FAIL: elf/tst-gnu2-tls2 original exit status 1 open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod2.so close tst-gnu2-tls2mod0.so close tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so Didn't expect signal from child: got `Segmentation fault' ===
Let me know if you need any help investigating this.
I don't have access to aarch64 machine which can build glibc. Please configure glibc with --enable-hardcoded-path-in-tests and run elf/tst-gnu2-tls2 under GDB to find out what is going on.
I will check this out H.J.
Does your _dl_tlsdesc_dynamic save ALL caller-saved registers, except for the return value register? I saw
stp x5, x6, [sp, #16*1] stp x7, x8, [sp, #16*2] stp x9, x10, [sp, #16*3] stp x11, x12, [sp, #16*4] stp x13, x14, [sp, #16*5] stp x15, x16, [sp, #16*6] stp x17, x18, [sp, #16*7]
Do you need to save x1 to x4?
On Thu, Feb 15, 2024 at 4:12 AM H.J. Lu hjl.tools@gmail.com wrote:
On Thu, Feb 15, 2024 at 3:49 AM Adhemerval Zanella Netto adhemerval.zanella@linaro.org wrote:
On 15/02/24 08:47, H.J. Lu wrote:
On Thu, Feb 15, 2024 at 12:01 AM Maxim Kuvyrkov maxim.kuvyrkov@linaro.org wrote:
On Feb 15, 2024, at 03:54, H.J. Lu hjl.tools@gmail.com wrote:
FAIL: elf/tst-gnu2-tls2
indicates that your _dl_tlsdesc_dynamic may not preserve all caller-saved registers. Please find out how the test fails.
Hi H.J.,
See below.
...
FAIL: 1 regressions
regressions.sum: === glibc tests ===
Running glibc:elf ... FAIL: elf/tst-gnu2-tls2
You can find the failure logs in *.log.1.xz files in
tests.log.1.xz contains output of failed tests -- https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa... === FAIL: elf/tst-gnu2-tls2 original exit status 1 open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod2.so close tst-gnu2-tls2mod0.so close tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so Didn't expect signal from child: got `Segmentation fault' ===
Let me know if you need any help investigating this.
I don't have access to aarch64 machine which can build glibc. Please configure glibc with --enable-hardcoded-path-in-tests and run elf/tst-gnu2-tls2 under GDB to find out what is going on.
I will check this out H.J.
Does your _dl_tlsdesc_dynamic save ALL caller-saved registers, except for the return value register? I saw
stp x5, x6, [sp, #16*1] stp x7, x8, [sp, #16*2] stp x9, x10, [sp, #16*3] stp x11, x12, [sp, #16*4] stp x13, x14, [sp, #16*5] stp x15, x16, [sp, #16*6] stp x17, x18, [sp, #16*7]
Do you need to save x1 to x4?
-- H.J.
If your processor is also impacted, please add it to
https://sourceware.org/bugzilla/show_bug.cgi?id=31372
On 15/02/24 09:13, H.J. Lu wrote:
On Thu, Feb 15, 2024 at 4:12 AM H.J. Lu hjl.tools@gmail.com wrote:
On Thu, Feb 15, 2024 at 3:49 AM Adhemerval Zanella Netto adhemerval.zanella@linaro.org wrote:
On 15/02/24 08:47, H.J. Lu wrote:
On Thu, Feb 15, 2024 at 12:01 AM Maxim Kuvyrkov maxim.kuvyrkov@linaro.org wrote:
On Feb 15, 2024, at 03:54, H.J. Lu hjl.tools@gmail.com wrote:
FAIL: elf/tst-gnu2-tls2
indicates that your _dl_tlsdesc_dynamic may not preserve all caller-saved registers. Please find out how the test fails.
Hi H.J.,
See below.
...
FAIL: 1 regressions
regressions.sum: === glibc tests ===
Running glibc:elf ... FAIL: elf/tst-gnu2-tls2
You can find the failure logs in *.log.1.xz files in
tests.log.1.xz contains output of failed tests -- https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa... === FAIL: elf/tst-gnu2-tls2 original exit status 1 open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod2.so close tst-gnu2-tls2mod0.so close tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so Didn't expect signal from child: got `Segmentation fault' ===
Let me know if you need any help investigating this.
I don't have access to aarch64 machine which can build glibc. Please configure glibc with --enable-hardcoded-path-in-tests and run elf/tst-gnu2-tls2 under GDB to find out what is going on.
I will check this out H.J.
Does your _dl_tlsdesc_dynamic save ALL caller-saved registers, except for the return value register? I saw
stp x5, x6, [sp, #16*1] stp x7, x8, [sp, #16*2] stp x9, x10, [sp, #16*3] stp x11, x12, [sp, #16*4] stp x13, x14, [sp, #16*5] stp x15, x16, [sp, #16*6] stp x17, x18, [sp, #16*7]
Do you need to save x1 to x4?
-- H.J.
If your processor is also impacted, please add it to
Hi H.J.
The issues is not really on aarch64, but rather arm 32 bits. And it is seems to be a real one on arm _dl_tlsdesc_dynamic implementation, that fail to save/restore r12 that is used by gcc as a scratch register.
I have added 3 more fixes on top on your patches [1]. First one is a small fix for the -mtls-dialect=gnu2 configure test that fail when -mtp=soft is used (used by default arm-linux-gnueabihf cross compiler produced by build-many-glibcs.py).
Second is the arm fix for BZ 31372 regression. However, I am not sure if this suffice, since similar to others ABIs, arm also support vector extensions (VFP, VFP3, and neon). I think we will eventually need to do something similar to what you did for x86 and provided either multiple _dl_tlsdesc_dynamic or handle the vector register save/restore using hwcap feature check (or we can also eventually just remove the slow patch and get over this whole save/restore vector extensions).
This is not an issue now on arm32 because gnu2 is not default and I don't think gcc will flip the switch in near future.
The last patch enables TLS descriptor tests on aarch64 as well, since it uses a different name of gnu2. I think RISC-V will use the same naming as aarch64, so it would make easier to enable such tests on this abi as well.
[1] https://github.com/zatrazz/glibc/commits/azanella/tls-descriptor-fixes-arm/
On Thu, Feb 15, 2024 at 10:02 AM Adhemerval Zanella Netto adhemerval.zanella@linaro.org wrote:
On 15/02/24 09:13, H.J. Lu wrote:
On Thu, Feb 15, 2024 at 4:12 AM H.J. Lu hjl.tools@gmail.com wrote:
On Thu, Feb 15, 2024 at 3:49 AM Adhemerval Zanella Netto adhemerval.zanella@linaro.org wrote:
On 15/02/24 08:47, H.J. Lu wrote:
On Thu, Feb 15, 2024 at 12:01 AM Maxim Kuvyrkov maxim.kuvyrkov@linaro.org wrote:
> On Feb 15, 2024, at 03:54, H.J. Lu hjl.tools@gmail.com wrote: > > FAIL: elf/tst-gnu2-tls2 > > indicates that your _dl_tlsdesc_dynamic may not preserve all caller-saved > registers. Please find out how the test fails.
Hi H.J.,
See below.
... > FAIL: 1 regressions > > regressions.sum: > === glibc tests === > > Running glibc:elf ... > FAIL: elf/tst-gnu2-tls2 > > > You can find the failure logs in *.log.1.xz files in > - https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa...
tests.log.1.xz contains output of failed tests -- https://ci.linaro.org/job/tcwg_glibc_check--master-arm-precommit/1460/artifa... === FAIL: elf/tst-gnu2-tls2 original exit status 1 open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod2.so close tst-gnu2-tls2mod0.so close tst-gnu2-tls2mod1.so open tst-gnu2-tls2mod0.so open tst-gnu2-tls2mod1.so Didn't expect signal from child: got `Segmentation fault' ===
Let me know if you need any help investigating this.
I don't have access to aarch64 machine which can build glibc. Please configure glibc with --enable-hardcoded-path-in-tests and run elf/tst-gnu2-tls2 under GDB to find out what is going on.
I will check this out H.J.
Does your _dl_tlsdesc_dynamic save ALL caller-saved registers, except for the return value register? I saw
stp x5, x6, [sp, #16*1] stp x7, x8, [sp, #16*2] stp x9, x10, [sp, #16*3] stp x11, x12, [sp, #16*4] stp x13, x14, [sp, #16*5] stp x15, x16, [sp, #16*6] stp x17, x18, [sp, #16*7]
Do you need to save x1 to x4?
-- H.J.
If your processor is also impacted, please add it to
Hi H.J.
The issues is not really on aarch64, but rather arm 32 bits. And it is seems to be a real one on arm _dl_tlsdesc_dynamic implementation, that fail to save/restore r12 that is used by gcc as a scratch register.
I have added 3 more fixes on top on your patches [1]. First one is a small fix for the -mtls-dialect=gnu2 configure test that fail when -mtp=soft is used (used by default arm-linux-gnueabihf cross compiler produced by build-many-glibcs.py).
Second is the arm fix for BZ 31372 regression. However, I am not sure if this suffice, since similar to others ABIs, arm also support vector extensions (VFP, VFP3, and neon). I think we will eventually need to do something similar to what you did for x86 and provided either multiple _dl_tlsdesc_dynamic or handle the vector register save/restore using hwcap feature check (or we can also eventually just remove the slow patch and get over this whole save/restore vector extensions).
This is not an issue now on arm32 because gnu2 is not default and I don't think gcc will flip the switch in near future.
The last patch enables TLS descriptor tests on aarch64 as well, since it uses a different name of gnu2. I think RISC-V will use the same naming as aarch64, so it would make easier to enable such tests on this abi as well.
[1] https://github.com/zatrazz/glibc/commits/azanella/tls-descriptor-fixes-arm/
Great. I added Arm to
https://sourceware.org/bugzilla/show_bug.cgi?id=31372
Thanks.
linaro-toolchain@lists.linaro.org