2021-09-13 12:56:21 |
Frank Heimes |
description |
https://github.com/golang/go/issues/46803
(https://go-review.googlesource.com/c/go/+/328110/)
This seems to be a somehow older issue, since we noticed this discussion on 5.11:
https://lore.kernel.org/lkml/20210802134347.193675104@linuxfoundation.org/
“
Issue where the 5.13 kernel makes binaries built with Go before 1.15.15, 1.16.7, 1.17 prone to crashing when they receive a signal. The upstream bug report is here https://github.com/golang/go/issues/46803 but the issue is that the vDSO (virtual dynamic shared object) functions in 5.13 now touch r30 -- of course they preserve it, but before 5.13 they didn't touch it at all and the Go runtime assumed that if a signal arrived during a vDSO function the value it had stored in r30 was still valid.
We made sure that everything works on Impish and rebuilt all Go binaries - so impish (and newer) is be fine, because for impish we added the above kernel patch (the one discussed in the lkml) into 5.13.0-16.16 (in impish-proposed):
fe57d86f7c3f ("powerpc/vdso: Don't use r30 to avoid breaking Go lang")
But we are still a bit concerned about older kernels / backports,
since this could be an issue with running older containers on newer hosts, and it potentially can be an issue for snaps, too. |
https://github.com/golang/go/issues/46803
(https://go-review.googlesource.com/c/go/+/328110/)
This seems to be a somehow older issue, since we noticed this discussion on 5.11:
https://lore.kernel.org/lkml/20210802134347.193675104@linuxfoundation.org/
“
Issue where the 5.13 kernel makes binaries built with Go before 1.15.15, 1.16.7, 1.17 prone to crashing when they receive a signal. The upstream bug report is here https://github.com/golang/go/issues/46803 but the issue is that the vDSO (virtual dynamic shared object) functions in 5.13 now touch r30 -- of course they preserve it, but before 5.13 they didn't touch it at all and the Go runtime assumed that if a signal arrived during a vDSO function the value it had stored in r30 was still valid.
We made sure that everything works on Impish and rebuilt all Go binaries - so impish (and newer) is fine; since for impish we added the above kernel patch (the one discussed in the lkml) to our Ubuntu kernel 5.13.0-16.16:
fe57d86f7c3f ("powerpc/vdso: Don't use r30 to avoid breaking Go lang")
But we are still a bit concerned about older kernels / potential backports needed,
since this could be an issue with running older containers on newer hosts, and it potentially can be an issue for snaps, too. |
|