From: Mina Chou via ltp <ltp@lists.linux.it>
To: <ltp@lists.linux.it>
Subject: Re: [LTP] [PATCH v2] waitid10: Set the core dump file location to temporary directory
Date: Mon, 8 Apr 2024 11:15:30 +0800 [thread overview]
Message-ID: <ZhNhUlbGPGK_QbFJ@swlinux02> (raw)
In-Reply-To: <Zg02mbnjInBl7pw_@yuki>
On Wed, Apr 03, 2024 at 12:59:37PM +0200, Cyril Hrubis wrote:
> [EXTERNAL MAIL]
>
> Hi!
> > When testing via NFS mount LTP folder on the board, with the NFS server
> > configured using 'anonuid' and 'anongid' options to set specific
> > uid/gid, waitid10 fails. This is due to a uid mismatch during core dump
> > file creation, leading to an aborted dump, resulting in the child
> > process receiving the signal CLD_KILLED instead of CLD_DUMPED.
> >
> > # ./waitid10
> > tst_buffers.c:56: TINFO: Test is using guarded buffers
> > tst_test.c:1732: TINFO: LTP version: 20240129
> > tst_test.c:1616: TINFO: Timeout per run is 0h 05m 00s
> > waitid10.c:64: TINFO: Raising RLIMIT_CORE rlim_cur=0 -> 0
> > [ 296.482665] mnt_uid= 1036, curr_uid= 0
> > [ 296.483041] Core dump to core aborted: cannot preserve file owner
> > waitid10.c:36: TPASS: waitid(P_ALL, 0, infop, WEXITED) passed
> > waitid10.c:37: TPASS: infop->si_pid == pidchild (149)
> > waitid10.c:38: TPASS: infop->si_status == SIGFPE (8)
> > waitid10.c:39: TPASS: infop->si_signo == SIGCHLD (17)
> > waitid10.c:42: TFAIL: infop->si_code (2) != CLD_DUMPED (3)
> >
> > Therefore, referring to madvise08, during testing, set the core dump file
> > to the temporary directory instead of the current working directory. After
> > testing, restore the contents of /proc/sys/kernel/core_pattern and clear
> > all test temporary file.
>
> Thanks for the detailed description, now it's clear what happens on your
> system.
>
> > # ./waitid10
> > tst_buffers.c:56: TINFO: Test is using guarded buffers
> > tst_test.c:1709: TINFO: LTP version: 20240129-45-g69537563d16a
> > tst_test.c:1593: TINFO: Timeout per run is 0h 05m 00s
> > waitid10.c:60: TINFO: Temporary core pattern is '/tmp/LTP_waiSzyEv2/core'
> > waitid10.c:73: TINFO: Raising RLIMIT_CORE rlim_cur=0 -> 0
> > [68549.534126] mnt_uid= 0, curr_uid= 0
> > waitid10.c:38: TPASS: waitid(P_ALL, 0, infop, WEXITED) passed
> > waitid10.c:39: TPASS: infop->si_pid == pidchild (163)
> > waitid10.c:40: TPASS: infop->si_status == SIGFPE (8)
> > waitid10.c:41: TPASS: infop->si_signo == SIGCHLD (17)
> > waitid10.c:44: TPASS: infop->si_code == CLD_DUMPED (3)
> >
> > Signed-off-by: Hui Min Mina Chou <minachou@andestech.com>
> > ---
> > testcases/kernel/syscalls/waitid/waitid10.c | 16 +++++++++++++++-
> > 1 file changed, 15 insertions(+), 1 deletion(-)
> >
> > diff --git a/testcases/kernel/syscalls/waitid/waitid10.c b/testcases/kernel/syscalls/waitid/waitid10.c
> > index e55e88c2325e..3e48f52d0ea8 100644
> > --- a/testcases/kernel/syscalls/waitid/waitid10.c
> > +++ b/testcases/kernel/syscalls/waitid/waitid10.c
> > @@ -16,6 +16,8 @@
> > #include <sys/prctl.h>
> > #include "tst_test.h"
> >
> > +#define CORE_PATTERN "/proc/sys/kernel/core_pattern"
> > +
> > static siginfo_t *infop;
> > static int core_dumps = 1;
> >
> > @@ -48,9 +50,16 @@ static void setup(void)
> > {
> > struct rlimit rlim;
> > char c;
> > + char cwd[1024];
> > + char tmpcpattern[1048];
> >
> > SAFE_GETRLIMIT(RLIMIT_CORE, &rlim);
> > - SAFE_FILE_SCANF("/proc/sys/kernel/core_pattern", "%c", &c);
> > +
> > + SAFE_GETCWD(cwd, sizeof(cwd));
> > + snprintf(tmpcpattern, sizeof(tmpcpattern), "%s/core", cwd);
> > + tst_res(TINFO, "Temporary core pattern is '%s'", tmpcpattern);
> > + SAFE_FILE_PRINTF(CORE_PATTERN, "%s", tmpcpattern);
> > + SAFE_FILE_SCANF(CORE_PATTERN, "%c", &c);
>
> Given the description do we really need to change the core pattern?
>
> I guess that just adding .needs_tmpdir = 1 would fix the test since the
> test $CWD would point to the test temporary directory.
>
Yes, you're right! Simply adding .needs_tmpdir = 1 can solve the issue.
Thanks, I'll revise another version.
> > if (rlim.rlim_cur)
> > return;
> > @@ -76,4 +85,9 @@ static struct tst_test test = {
> > {&infop, .size = sizeof(*infop)},
> > {},
> > },
> > + .needs_tmpdir = 1,
> > + .save_restore = (const struct tst_path_val[]) {
> > + {CORE_PATTERN, NULL, TST_SR_TCONF},
> > + {}
> > + },
> > };
> > --
> > 2.34.1
> >
> >
> > --
> > Mailing list info: https://lists.linux.it/listinfo/ltp
>
> --
> Cyril Hrubis
> chrubis@suse.cz
Thanks,
Mina
--
Mailing list info: https://lists.linux.it/listinfo/ltp
prev parent reply other threads:[~2024-04-08 3:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-03 5:18 [LTP] [PATCH v2] waitid10: Set the core dump file location to temporary directory Hui Min Mina Chou via ltp
2024-04-03 10:59 ` Cyril Hrubis
2024-04-08 3:15 ` Mina Chou via ltp [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZhNhUlbGPGK_QbFJ@swlinux02 \
--to=ltp@lists.linux.it \
--cc=minachou@andestech.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox