From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joerg Vehlow Date: Mon, 19 Apr 2021 09:34:34 +0200 Subject: [LTP] [PATCH v2] pec: Fix multiple event test In-Reply-To: References: <20210415090542.960158-1-lkml@jv-coder.de> Message-ID: <1672a8d4-e278-801b-a2f6-babdc473f42e@jv-coder.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: ltp@lists.linux.it 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