"Robin Jarry" <[email protected]> writes:

> I am Robin Jarry. Among other things, I maintain the aerc email client
> (https://sr.ht/~rjarry/aerc/) and I have been a Patchwork user for
> a long time. Over the past couple of months, I have been working on
> a ground-up rewrite of Patchwork with the support of Stephen Finucane.
> The code lives under the official organization:
>
>   https://github.com/getpatchwork/patchwork-next
>   https://getpatchwork.github.io/patchwork-next/

Hello Robin,

I'm not a regular patchwork user, but I always found the project
interesting. I work mostly in Gentoo Linux and have been wondering if
it'd make sense for Gentoo to use Patchwork. Gentoo sees a modest stream
of patches on https://public-inbox.gentoo.org/gentoo-dev/ (and some
other MLs as well). Some form of changes are required to be posted on
gentoo-dev@ ML, but many smaller patches are received via pull requests
on Codeberg and GitHub.

So I figured I'd give patchwork-next a spin! I cloned patchwork-next and
followed instructions to set up a database (sqlite), created a
gentoo-dev project and started the services (pw http and pw ingress). I
must say the setup is *very* easy.

Next I wanted to import some patches, and found the --mbox argument for
"pw ingress" in the "Manual Import" section of the installation docs. I
downloaded an mbox archive from the gentoo-dev public-inbox, unpacked it
and ran:

--- [snip] ---
$ ./pw ingress --mbox < 
patches/gentoo-dev-PATCH-prefix.eclass-support-EAPI-9.mbox
DEBUG 2026/08/28 10:48:13 bus.go:83: starting webhook worker#2
DEBUG 2026/08/28 10:48:13 bus.go:83: starting webhook worker#4
DEBUG 2026/08/28 10:48:13 parser.go:103: parsing 
msgid=<[email protected]> subject="[gentoo-dev] [PATCH] 
prefix.eclass: support EAPI 9"
DEBUG 2026/08/28 10:48:13 bus.go:83: starting webhook worker#3
DEBUG 2026/08/28 10:48:13 project.go:69: found list-id="gentoo-dev.gentoo.org" 
from List-ID header
DEBUG 2026/08/28 10:48:13 bus.go:83: starting webhook worker#1
DEBUG 2026/08/28 10:48:13 parser.go:111: project=gentoo-dev (id=1)
DEBUG 2026/08/28 10:48:13 parser.go:120: series marker: n=1 total=1 version=1 
comment=false refs=[]
DEBUG 2026/08/28 10:48:13 parser.go:139: dispatching as patch
DEBUG 2026/08/28 10:48:13 project.go:35: author: Florian Schmaus 
<[email protected]> (id=10)
INFO 2026/08/28 10:48:13 patch.go:55: patch saved id=7 
msgid=<[email protected]>
DEBUG 2026/08/28 10:48:13 event.go:29: event queued: patch-created
DEBUG 2026/08/28 10:48:13 series.go:54: created new series id=3
DEBUG 2026/08/28 10:48:13 event.go:29: event queued: series-created
DEBUG 2026/08/28 10:48:13 series.go:85: assigned patch id=7 to series id=3 (n=1)
DEBUG 2026/08/28 10:48:13 series.go:91: series id=3 name set to "prefix.eclass: 
support EAPI 9"
DEBUG 2026/08/28 10:48:13 event.go:29: event queued: patch-completed
DEBUG 2026/08/28 10:48:13 event.go:29: event queued: series-completed
DEBUG 2026/08/28 10:48:13 bus.go:111: shutting down webhook worker#2
DEBUG 2026/08/28 10:48:13 bus.go:111: shutting down webhook worker#3
DEBUG 2026/08/28 10:48:13 bus.go:111: shutting down webhook worker#4
DEBUG 2026/08/28 10:48:13 bus.go:111: shutting down webhook worker#1
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0xca8a28]

goroutine 1 [running]:
github.com/getpatchwork/patchwork/pkg/db.(*Queries).Commit(0x30791dcb4000)
        github.com/getpatchwork/patchwork/pkg/db/db.go:176 +0x168
github.com/getpatchwork/patchwork/pkg/mail.ParseMail({0x120b810, 
0x30791dca3d70}, 0x30791dca0d40, {0x12021a0?, 0x30791dca1080?}, 
{0x30791dc1f218, 0x1, 0x1bfe7e0?})
        github.com/getpatchwork/patchwork/pkg/mail/parser.go:152 +0xa57
github.com/getpatchwork/patchwork/cmd/pw/ingress.(*CLI).Run(0x30791dbba5f0, 
0x30791dca3d70)
        github.com/getpatchwork/patchwork/cmd/pw/ingress/main.go:66 +0x9ec
reflect.Value.call({0x1044120?, 0x30791dbba5f0?, 0x1123fe0?}, {0x1198d6c, 0x4}, 
{0x30791dc1fa18, 0x1, 0x1044120?})
        reflect/value.go:586 +0xf0c
reflect.Value.Call({0x1044120?, 0x30791dbba5f0?, 0x30791dc1faa0?}, 
{0x30791dc1fa18?, 0x100791db634a0?, 0x7fa76069d1c8?})
        reflect/value.go:369 +0xb9
github.com/alecthomas/kong.callAnyFunction({0x1044120?, 0x30791dbba5f0?, 
0x1061820?}, 0x30791dca3dd0)
        github.com/alecthomas/[email protected]/callbacks.go:256 +0x8a5
github.com/alecthomas/kong.callFunction({0x1044120?, 0x30791dbba5f0?, 0x1?}, 
0x30791dca3dd0)
        github.com/alecthomas/[email protected]/callbacks.go:213 +0x1f6
github.com/alecthomas/kong.(*Context).RunNode(0x30791dbab000, 0x30791dc5c000, 
{0x30791dc1ff18, 0x1, 0x1})
        github.com/alecthomas/[email protected]/context.go:866 +0x93e
github.com/alecthomas/kong.(*Context).Run(0x30791dbab000, {0x30791dc1ff18?, 
0x0?, 0x30791dc1ff18?})
        github.com/alecthomas/[email protected]/context.go:895 +0x13c
main.main()
        github.com/getpatchwork/patchwork/cmd/pw/main.go:79 +0x287

--- [end snip] ---

Although it crashes, the first message is actually imported and I can
see it in the UI. Re-running the command imports the next message:

--- [snip] ---

$ ./pw ingress --mbox < 
patches/gentoo-dev-PATCH-prefix.eclass-support-EAPI-9.mbox
DEBUG 2026/08/28 10:48:15 bus.go:83: starting webhook worker#4
DEBUG 2026/08/28 10:48:15 bus.go:83: starting webhook worker#3
DEBUG 2026/08/28 10:48:15 bus.go:83: starting webhook worker#1
DEBUG 2026/08/28 10:48:15 parser.go:103: parsing 
msgid=<[email protected]> subject="[gentoo-dev] [PATCH] 
prefix.eclass: support EAPI 9"
DEBUG 2026/08/28 10:48:15 bus.go:83: starting webhook worker#2
DEBUG 2026/08/28 10:48:15 project.go:69: found list-id="gentoo-dev.gentoo.org" 
from List-ID header
DEBUG 2026/08/28 10:48:15 parser.go:111: project=gentoo-dev (id=1)
DEBUG 2026/08/28 10:48:15 parser.go:120: series marker: n=1 total=1 version=1 
comment=false refs=[]
DEBUG 2026/08/28 10:48:15 parser.go:139: dispatching as patch
DEBUG 2026/08/28 10:48:15 project.go:35: author: Florian Schmaus 
<[email protected]> (id=10)
DEBUG 2026/08/28 10:48:15 main.go:68: ignoring duplicate message: 
<[email protected]>
DEBUG 2026/08/28 10:48:15 parser.go:103: parsing 
msgid=<[email protected]> subject="Re: [gentoo-dev] [PATCH] 
prefix.eclass: support EAPI 9"
DEBUG 2026/08/28 10:48:15 project.go:69: found list-id="gentoo-dev.gentoo.org" 
from List-ID header
DEBUG 2026/08/28 10:48:15 parser.go:111: project=gentoo-dev (id=1)
DEBUG 2026/08/28 10:48:15 parser.go:120: series marker: n=0 total=0 version=1 
comment=true refs=[<[email protected]> 
<[email protected]>]
DEBUG 2026/08/28 10:48:15 parser.go:145: dispatching as comment
DEBUG 2026/08/28 10:48:15 comment.go:21: comment on patch id=7 via direct ref 
<[email protected]>
DEBUG 2026/08/28 10:48:15 project.go:35: author: Sam James <[email protected]> 
(id=11)
DEBUG 2026/08/28 10:48:15 main.go:68: ignoring duplicate message: 
<[email protected]>
DEBUG 2026/08/28 10:48:15 parser.go:103: parsing 
msgid=<[email protected]> subject="Re: [gentoo-dev] [PATCH] 
prefix.eclass: support EAPI 9"
DEBUG 2026/08/28 10:48:15 project.go:69: found list-id="gentoo-dev.gentoo.org" 
from List-ID header
DEBUG 2026/08/28 10:48:15 parser.go:111: project=gentoo-dev (id=1)
DEBUG 2026/08/28 10:48:15 parser.go:120: series marker: n=0 total=0 version=1 
comment=true refs=[<[email protected]> 
<[email protected]>]
DEBUG 2026/08/28 10:48:15 parser.go:145: dispatching as comment
DEBUG 2026/08/28 10:48:15 comment.go:21: comment on patch id=7 via direct ref 
<[email protected]>
DEBUG 2026/08/28 10:48:15 project.go:35: author: Fabian Groffen 
<[email protected]> (id=12)
DEBUG 2026/08/28 10:48:15 event.go:29: event queued: patch-comment-created
INFO 2026/08/28 10:48:15 comment.go:80: patch comment saved patch=7 
msgid=<[email protected]>
DEBUG 2026/08/28 10:48:15 bus.go:111: shutting down webhook worker#4
DEBUG 2026/08/28 10:48:15 bus.go:111: shutting down webhook worker#1
DEBUG 2026/08/28 10:48:15 bus.go:111: shutting down webhook worker#3
DEBUG 2026/08/28 10:48:15 bus.go:111: shutting down webhook worker#2
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0xca8a28]
--- [end snip] ---

If I keep running the command, all messages are eventually imported and
the crash stops happening (all messages are skipped, I think).

In case you're interested in trying it out for yourself, here's the mail
thread that I started from to get the above logs (downloaded with the
mbox.gz link at the bottom of the page and unpacked locally):

https://public-inbox.gentoo.org/gentoo-dev/[email protected]/T/#t

I figured that running "ingress --mbox" with an mbox file containing
multiple messages that all messages would be processed.

I hope this helps :)

All the best,
-- Thomas
_______________________________________________
Patchwork mailing list
[email protected]
https://lists.ozlabs.org/listinfo/patchwork

Reply via email to