~sircmpwn/aerc2#270:
Reply-all (rr) crashes on OpenBSD

Hi,

Using today's master branch, using rr gives the following stack trace:

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

goroutine 1 [running]:
git.sr.ht/~sircmpwn/aerc/commands/msg.reply.Execute(0xc0000b4480, 0xc000321c00, 0x2, 0x2, 0x1, 0xc0000a2fc0)
    /home/edd/source/aerc/commands/msg/reply.go:97 +0xa49
git.sr.ht/~sircmpwn/aerc/commands.(*Commands).ExecuteCommand(0xc0000101a0, 0xc0000b4480, 0xc000321c00, 0x2, 0x2, 0x370cc0, 0xc0009d53c0)
    /home/edd/source/aerc/commands/commands.go:65 +0xfe
main.execCommand(0xc0000b4480, 0xc00009a550, 0xc000321c00, 0x2, 0x2, 0xc000321c00, 0xc000ce1320)
    /home/edd/source/aerc/aerc.go:58 +0xc5
main.main.func1(0xc000321c00, 0x2, 0x2, 0x2, 0x2)
    /home/edd/source/aerc/aerc.go:148 +0x57
git.sr.ht/~sircmpwn/aerc/widgets.(*Aerc).BeginExCommand.func1(0xc0009d73e0, 0x8)
    /home/edd/source/aerc/widgets/aerc.go:351 +0x95
git.sr.ht/~sircmpwn/aerc/widgets.(*ExLine).Event(0xc000d018c0, 0x36ffc0, 0xc000321b60, 0xc000321b60)
    /home/edd/source/aerc/widgets/exline.go:56 +0x15e
git.sr.ht/~sircmpwn/aerc/widgets.(*Aerc).Event(0xc0000b4480, 0x36ffc0, 0xc000321b60, 0x244101)
    /home/edd/source/aerc/widgets/aerc.go:170 +0x494
git.sr.ht/~sircmpwn/aerc/widgets.(*Aerc).simulate(0xc0000b4480, 0xc0000dac00, 0xa, 0x10)
    /home/edd/source/aerc/widgets/aerc.go:163 +0x9b
git.sr.ht/~sircmpwn/aerc/widgets.(*Aerc).Event(0xc0000b4480, 0x36ffc0, 0xc000321aa0, 0xc00015f500)
    /home/edd/source/aerc/widgets/aerc.go:186 +0x39c
git.sr.ht/~sircmpwn/aerc/lib/ui.(*UI).Tick(0xc00009a550, 0x2f5700)
    /home/edd/source/aerc/lib/ui/ui.go:84 +0xc9
main.main()
    /home/edd/source/aerc/aerc.go:176 +0x56d

Let me know if I can provide more info. I don't know the first thing about go.

Status
REPORTED
Submitter
~vext01
Assigned to
No-one
Submitted
a month ago
Updated
21 days ago
Labels
No labels applied.

~pmolloy 21 days ago

Neither do I! It looks like errors returned by gomail.ParseAddress() on line 61 are not handled. In that case if the first value is nil it would explain the panic on line 97 when it is dereferenced.

If you're building from source you could change line 61 to something like the following:

fmt.Println(conf.From)
us, err := gomail.ParseAddress(conf.From)
if us == nil {
    fmt.Println(err)
    return err
}
Register here or Log in to comment, or comment via email.