[LTP] [PATCH v2] pec: Fix multiple event test

Joerg Vehlow lkml@jv-coder.de
Mon Apr 19 09:34:34 CEST 2021


Hi,

On 4/16/2021 7:38 PM, Petr Vorel wrote:
> Hi Joerg,
>
> ...
>> +# Find a free file handle
>> +free_fd()
>> +{
>> +	local fd
>> +
>> +	for fd in $(seq 200); do
>> +		# Sapwn a new sh, because redirecting to a non existing file handle
>> +		# will trigger a syntax error.
>> +		/bin/sh -c ": 2>/dev/null >&$fd || : 2>/dev/null <&$fd" 2>/dev/null
> Probably better to use sh -c "..."
I used  /bin/sh, because that is the same interpreter specified in the 
shebang. Just using sh could theoretically fail or spawn a different shell.
Maybe $SHELL would be better, but I don't know how widely this is 
supported...

>
>> +		if [ $? -eq 2 ]; then
>> +			echo $fd
>> +			return
>> +		fi
>> +	done
> maybe I do something wrong, but this version fails for me
> (and I'm still testing it only on bash):
>
> cn_pec 1 TINFO: timeout per run is 0h 5m 0s
> cn_pec 1 TINFO: Test process events connector
> cn_pec 1 TINFO: Testing fork event (nevents=10)
> cn_pec 1 TBROK: No free filehandle found
>
> I guess there is something wrong free_fd().

Damn shells... I just realized /bin/sh on my system was dash's sh 
emulation and it does not emulate sh the same way bash does...
The return value in bash is 1, not two... Can you please check the patch 
with [ $? -ne 0 ]? That should work for all shells.

Jörg


More information about the ltp mailing list