[PATCH] test: Fix the escaping issue in memory/passt test
Test memory/passt failed with error "objsize: No such file or
directory" because of an escaping issue. Fix it.
Link: https://bugs.passt.top/show_bug.cgi?id=155
Signed-off-by: Yumei Huang
On Wed, Oct 15, 2025 at 04:04:02PM +0800, Yumei Huang wrote:
Test memory/passt failed with error "objsize: No such file or directory" because of an escaping issue. Fix it.
It would be useful for the commit message to spell out in more detail what exactly is going wrong. How is the missing escape resulting in the error we see. What is the extra escape for, specifically? '\1' is what we want to give to sed, the '' should escape it for the shell. I'm assuming something else in the test scripts is removing one of these escapes, but it's not obvious to me what exactly.
Link: https://bugs.passt.top/show_bug.cgi?id=155 Signed-off-by: Yumei Huang
--- test/memory/passt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/memory/passt b/test/memory/passt index 7e45724..c5142ea 100644 --- a/test/memory/passt +++ b/test/memory/passt @@ -51,7 +51,7 @@ guest sed /proc/slabinfo -ne 's/^\([^ ]* *[^ ]* *[^ ]* *[^ ]*\).*/\\\1/p' > /tmp guest kill \$(cat /tmp/pid) guest diff -y --suppress-common-lines /tmp/meminfo.before /tmp/meminfo.after || : guest nm -td -Sr --size-sort -P /bin/passt.avx2 | head -30 | tee /tmp/nm.size -guest sed /proc/slabinfo -ne 's/\(.*<objsize>\).*$/\1/p' | tail -1; (diff -y --suppress-common-lines /tmp/slabinfo.before /tmp/slabinfo.after | sort -grk8) +guest sed /proc/slabinfo -ne 's/\(.*<objsize>\).*$/\\\1/p' | tail -1; (diff -y --suppress-common-lines /tmp/slabinfo.before /tmp/slabinfo.after | sort -grk8) endef
def summary -- 2.47.0
-- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson
On Wed, 15 Oct 2025 16:04:02 +0800
Yumei Huang
Test memory/passt failed with error "objsize: No such file or directory" because of an escaping issue. Fix it.
Sorry for the delay. I tested the patch and it works for me, it simply adds a \ at the beginning of the line, and that print simply shows results in the test log. The output is not used in any automated way. But I never ran into the issue, so I was looking for an explanation for this:
Link: https://bugs.passt.top/show_bug.cgi?id=155 Signed-off-by: Yumei Huang
--- test/memory/passt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/memory/passt b/test/memory/passt index 7e45724..c5142ea 100644 --- a/test/memory/passt +++ b/test/memory/passt @@ -51,7 +51,7 @@ guest sed /proc/slabinfo -ne 's/^\([^ ]* *[^ ]* *[^ ]* *[^ ]*\).*/\\\1/p' > /tmp guest kill \$(cat /tmp/pid) guest diff -y --suppress-common-lines /tmp/meminfo.before /tmp/meminfo.after || : guest nm -td -Sr --size-sort -P /bin/passt.avx2 | head -30 | tee /tmp/nm.size -guest sed /proc/slabinfo -ne 's/\(.*<objsize>\).*$/\1/p' | tail -1; (diff -y --suppress-common-lines /tmp/slabinfo.before /tmp/slabinfo.after | sort -grk8) +guest sed /proc/slabinfo -ne 's/\(.*<objsize>\).*$/\\\1/p' | tail -1; (diff -y --suppress-common-lines /tmp/slabinfo.before /tmp/slabinfo.after | sort -grk8)
Without the \ at the beginning, we have this line:
# name
On Wed, Oct 22, 2025 at 5:51 AM Stefano Brivio
On Wed, 15 Oct 2025 16:04:02 +0800 Yumei Huang
wrote: Test memory/passt failed with error "objsize: No such file or directory" because of an escaping issue. Fix it.
Sorry for the delay.
I tested the patch and it works for me, it simply adds a \ at the beginning of the line, and that print simply shows results in the test log. The output is not used in any automated way.
But I never ran into the issue, so I was looking for an explanation for this:
Link: https://bugs.passt.top/show_bug.cgi?id=155 Signed-off-by: Yumei Huang
--- test/memory/passt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/memory/passt b/test/memory/passt index 7e45724..c5142ea 100644 --- a/test/memory/passt +++ b/test/memory/passt @@ -51,7 +51,7 @@ guest sed /proc/slabinfo -ne 's/^\([^ ]* *[^ ]* *[^ ]* *[^ ]*\).*/\\\1/p' > /tmp guest kill \$(cat /tmp/pid) guest diff -y --suppress-common-lines /tmp/meminfo.before /tmp/meminfo.after || : guest nm -td -Sr --size-sort -P /bin/passt.avx2 | head -30 | tee /tmp/nm.size -guest sed /proc/slabinfo -ne 's/\(.*<objsize>\).*$/\1/p' | tail -1; (diff -y --suppress-common-lines /tmp/slabinfo.before /tmp/slabinfo.after | sort -grk8) +guest sed /proc/slabinfo -ne 's/\(.*<objsize>\).*$/\\\1/p' | tail -1; (diff -y --suppress-common-lines /tmp/slabinfo.before /tmp/slabinfo.after | sort -grk8)
Without the \ at the beginning, we have this line:
# name
<objsize> and... maybe you have a file in the directory where you run the tests that's called num_objs, or objsize, created as a result of a previous failure (and some other issue), and '
Perhaps a \# at the beginning, instead of #, makes Bash ignore the whole line, and for some reason it's not ignored otherwise?
It shouldn't have anything to do with the guest image because that's read-only.
Could you have a look if you see any "strange" file name in your test directory?
I don't see any strange file either num_objs or objsize in my test directory. The cmd is supposed to run inside the guest, and the error appears in pane_guest.log. I guess it's not related to the files on the host?
Otherwise I would be tempted to just go ahead and apply this because it's harmless and it's not *that* important that we find a solution to this. We're going to rewrite this test eventually.
-- Stefano
-- Thanks, Yumei Huang
On Wed, 15 Oct 2025 16:04:02 +0800
Yumei Huang
Test memory/passt failed with error "objsize: No such file or directory" because of an escaping issue. Fix it.
Link: https://bugs.passt.top/show_bug.cgi?id=155 Signed-off-by: Yumei Huang
Applied. I tried to actually un-escape more stuff from the sed pattern (for example just 'sed s/\(.*...)/.../p') and sure I get problems with Bash but not the 'objsize' thing you're hitting, so I don't have another explanation. I'm fairly sure that one of those < > around objsize is taken as redirection by Bash, but I have no idea why. Whatever, as long as it's harmless, these test scripts are definitely not very clean/elegant... -- Stefano
participants (3)
-
David Gibson
-
Stefano Brivio
-
Yumei Huang