jech / galene

The Galène videoconference server
https://galene.org
MIT License
969 stars 131 forks source link

[armv7] Panic when calling 64-bit atomic functions #19

Closed Desplandis closed 3 years ago

Desplandis commented 3 years ago

Hi,

On ARMv7 Linux, galène panics when calling 64-bit atomic functions (LoadingUint64, StoreUint64, ...).

An example when joining a group with two users:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x11ce8]

goroutine 213 [running]:

runtime/internal/atomic.goLoad64(0x8b62ac, 0x3828549, 0x3b9aca00)
    /usr/local/go/src/runtime/internal/atomic/atomic_arm.go:131 +0x1c
github.com/jech/galene/rtpconn.sendSR(0x85d260, 0x910a58, 0x1)
    /dir/to/galene/rtpconn/rtpconn.go:838 +0x174
github.com/jech/galene/rtpconn.rtcpUpListener(0xcc2a00, 0x8ae1c0, 0xd6a0c0)
    /dir/to/galene/rtpconn/rtpconn.go:718 +0x508
created by github.com/jech/galene/rtpconn.newUpConn.func1
    /dir/to/galene/rtpconn/rtpconn.go:476 +0x258

It seems to be a known bug of the atomic package (https://golang.org/pkg/sync/atomic/#pkg-note-BU) which requires 64-bit values accessed atomically to be 64-bit aligned.

jech commented 3 years ago

Should be fixed in 9e4aede72a988a4146a570e89a703ef857d300bf. Please reopen if that is not the case.