Hi, This regression is similar to one I reported earlier [1], with the same error message but with slightly different reproducer (and as continuation to the former report). I use git-send-email(1) to submit patches (occasional doc fixes) to LKML. Rather than having to type multiple --to/--cc addresses, I use the undocumented behavior of listing multiple addresses separated by comma in a single --to/--cc option. i.e.: ``` $ git send-email \ --to="foo <foo@xxxxxxxx>,bar <bar@xxxxxxxx>" \ --cc="main list <main-list@xxxxxxxx>, sub list <sub-list@xxxxxxxx>" \ /path/to/series/*.patch ``` [This is the same behavior as Thunderbird.] In my linux kernel tree (linux.git) used for development, I add sendemail-validate hook that adds DKIM-like attestation with patatt: ``` #!/bin/sh # installed by patatt install-hook patatt sign --hook "${1}" ``` Starting from Git v2.41.0, when I try to use git-send-email(1), I got perl-related error: ``` Use of uninitialized value $address in sprintf at /home/bagas/.app/git/dist/v2.42.0/libexec/git-core/git-send-email line 1172. error: unable to extract a valid address from: ``` It looks like git-send-email(1) trips on cover letter since there is no recipient addresses there, and also on patches without Signed-off-by: trailer. Bisecting between v2.40.0 and v2.41.0, the culprit is commit a8022c5f7b67 (send-email: expose header information to git-send-email's sendemail-validate hook, 2023-04-19). The perl error should have been reduced by [2], but this address splitting (parsing) is still not addressed. The full bisection log is: ``` git bisect start '--term-good=ok' '--term-bad=oops' # status: waiting for both good and bad commits # ok: [73876f4861cd3d187a4682290ab75c9dccadbc56] Git 2.40 git bisect ok 73876f4861cd3d187a4682290ab75c9dccadbc56 # status: waiting for bad commit, 1 good commit known # oops: [fe86abd7511a9a6862d5706c6fa1d9b57a63ba09] Git 2.41 git bisect oops fe86abd7511a9a6862d5706c6fa1d9b57a63ba09 # ok: [b64894c2063e5875bfd95b537eafcb3e1abf46ff] Merge branch 'ow/ref-filter-omit-empty' git bisect ok b64894c2063e5875bfd95b537eafcb3e1abf46ff # ok: [ccd12a3d6cc62f51b746654ae56e26d92f89ba92] Merge branch 'en/header-split-cache-h-part-2' git bisect ok ccd12a3d6cc62f51b746654ae56e26d92f89ba92 # oops: [1e1dcb2a423cad350e8f20fdcc957064e5cff528] Merge branch 'jc/dirstat-plug-leaks' git bisect oops 1e1dcb2a423cad350e8f20fdcc957064e5cff528 # oops: [40a5d2b79b57378cc36d43d3b30e704100dc1492] Merge branch 'fc/doc-man-lift-title-length-limit' git bisect oops 40a5d2b79b57378cc36d43d3b30e704100dc1492 # ok: [07ac32fff94b245aec3e2b80efad0b5dada629cb] Merge branch 'ma/gittutorial-fixes' git bisect ok 07ac32fff94b245aec3e2b80efad0b5dada629cb # oops: [7f3cc51b284d696fdb8dfbd8c9f9d0c014019d93] Merge branch 'ar/test-cleanup-unused-file-creation-part2' git bisect oops 7f3cc51b284d696fdb8dfbd8c9f9d0c014019d93 # oops: [b6e9521956b752be4c666efedd7b91bdd05f9756] Merge branch 'ms/send-email-feed-header-to-validate-hook' git bisect oops b6e9521956b752be4c666efedd7b91bdd05f9756 # ok: [e2abfa7212525daa24a52d9f53c45b736abb5dfe] Merge branch 'hx/negotiator-non-recursive' git bisect ok e2abfa7212525daa24a52d9f53c45b736abb5dfe # oops: [a8022c5f7b678189135b6caa3fadb3d8ec0c0d48] send-email: expose header information to git-send-email's sendemail-validate hook git bisect oops a8022c5f7b678189135b6caa3fadb3d8ec0c0d48 # ok: [56adddaa06d376f3977ee91e8a769cd85439d21c] send-email: refactor header generation functions git bisect ok 56adddaa06d376f3977ee91e8a769cd85439d21c # first oops commit: [a8022c5f7b678189135b6caa3fadb3d8ec0c0d48] send-email: expose header information to git-send-email's sendemail-validate hook ``` To reproduce this regression: 1. Clone git.git repo, then branch off: ``` $ git clone https://github.com/git/git.git && cd git $ git checkout -b test ``` 2. Make two dummy signed-off commits: ``` $ echo test > test && git add test && git commit -s -m "test" $ echo "test test" >> test && git commit -a -s -m "test test" ``` 3. Generate patch series: ``` $ mkdir /tmp/test $ git format-patch -o /tmp/test --cover-letter main ``` 4. Send the series to dummy address: ``` $ git send-email --to="foo <foo@xxxxxxxx>,bar <bar@xxxxxxxx>" /tmp/test/*.patch ``` My system runs Debian testing (trixie/sid) with perl 5.36.0. Thanks. [1]: https://lore.kernel.org/git/ZQhI5fMhDE82awpE@xxxxxxxxx/ [2]: https://lore.kernel.org/git/545729b619308c6f3397b9aa1747f26ddc58f461.1695054945.git.me@xxxxxxxxxxxx/ -- An old man doll... just what I always wanted! - Clara
Attachment:
signature.asc
Description: PGP signature