|
From: | Eric Pruitt |
Subject: | Re: [bug-gawk] Function argument corruption in 4.2.0 |
Date: | Sun, 12 Nov 2017 16:04:41 -0800 |
User-agent: | NeoMutt/20170113 (1.7.2) |
On Sun, Nov 12, 2017 at 06:31:51PM -0500, Andrew J. Schorr wrote: > Thanks for the bug report. Did you try running under valgrind by any chance? I haven't. I'll give that a shot tomorrow. > > I've observed the corruption building against glibc and musl libc. > > Unfortunately I haven't been able to create a simplified test case > > or figure out which commit introduced the issue using "git bisect > > run" > > Why didn't git bisect work? That seems like a sensible first step. I'm not entirely sure. My daily debugging stack overflowed at that point, and I stuck it on the back burner :P. I've attached the script I I used and the output of a bisect attempt. The invocation follows: ( git reset --hard && git bisect reset && git bisect start HEAD gawk-4.1.4 && git bisect run ./bisect-run.sh ) 2>&1 | tee git-bisect-output Oh wait, this is interesting: the bisect reported a different commit this time around that actually looks like it's related: commit f8424b236fabb881cc977b9e8e2e7c8debf56da0 Author: Andrew J. Schorr <address@hidden> Date: Wed Jul 6 18:11:10 2016 -0400 Now that all fields are NUL-terminated, we can eliminate $n copying in the interpreter. My earlier attempts always pointed to the merge commit ea1a782c08d5a1948c22130f71a99e24f03b0d0a. I'm not sure what happened here. Maybe there's a synchronization issue that was "fixed" by using "tee" which I didn't do before since I was using tmux's scrollback buffer. > > I am happy to provide a copy of the mdlint script and the test case > > data if someone is willing to dig into the code. It depends on the > > cmark binary (https://github.com/commonmark/cmark), but that could > > be mocked out easily enough with something like "cat > > $OUTPUT_OF_CMARK". > > If it's possible to provide the source code, input, and expected > output, that would make it a lot easier to debug this... Sure -- I've had complaints where people would prefer no bug report over a bug report without a **simple** test case and / or a patch, so I was reticent to dump a bunch of attachments in the first message. These attachments are: - mdlint: The AwK script in question. - Makefile: This has a few rules to make testing my script easier. - test.in: This is the file that's fed to mdlint for testing. - test.out: This is the expected output of mdlint. - cmark-output.xml: This is the XML generated by the cmark binary. If you don't have / want to build cmark, you'll need to change the command on line 1272 to "cat cmark-output.xml". Eric
bisect-run.sh
Description: Bourne shell script
git-bisect-output
Description: Text document
cmark-output.xml
Description: application/xml
Makefile
Description: Text document
mdlint
Description: Text document
test.in
Description: Text document
test.out
Description: Text document
[Prev in Thread] | Current Thread | [Next in Thread] |