Re: [PATCH 4/7] tests: check kill is converting signals names correctly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 04/14/2014 09:00 PM, Sami Kerola wrote:
On 14 April 2014 17:14, Bernhard Voelker <mail@xxxxxxxxxxxxxxxxxxx> wrote:
Most of the tests could use pid, but I am afraid there should be at
least one of them using name. Else killing by name remains untested.

What about creating a test 'kill_by_name', and avoiding complexity
in the other tests? They all have a certain purpose each, so there's
no need to put a certain aspect into all of them.

Of course simple kill by name test could do the job, but I am not
hugely in favor to simplify tests until they work without
understanding why they fail in first place.

Agreed. Unfortunately, I didn't find *the* reason for the failure yet.
BTW, I often see both "all_processes" and "name_to_number" failing here.

It seems that there are several issues.
First of all, this looks odd in the receiver program:

> +	if (!stat(argv[1], &statbuf)) {
> +		if (S_ISDIR(statbuf.st_mode))
> +			xasprintf(&pid_path, "%s/%d", argv[1], getpid());
> +	} else
> +		xasprintf(&pid_path, "%s", argv[1]);

What if the argv[1] is stat()able but not a directory?

Anyway, I'm 40:60 against letting the receiver program decide where
the witness file is located, i.e. I'd rather use deterministic names
everywhere. E.g. in the 'name_to_number' tests, the name of the witness
files could contain the signal name rather than using unsafe mktemp.

Furthermore, the open() call would return -1 upon failure instead
of 0 as assumed here:

> +	if (!(fd = open(pid_path, O_WRONLY | O_CREAT | O_TRUNC, mode)))
> +		err(EXIT_FAILURE, "cannot open pid file: %s", pid_path);

Re. the "all_processes" test: I'm not sure how su(1) and the intermediate
shell change the signal handling. Maybe the reason for the failure is
somehow related to this, because $! will refer to the shell's PID rather
than to that of the receiver program.
Anyway, maybe it's better to use $TS_CMD_SU instead of the local 'su',
or even adding a dedicated setuid() helper.

As already said, these are just side notes.

Have a nice day,
Berny
--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux