You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by Steven Nairn <st...@gmail.com> on 2017/09/26 12:56:03 UTC
Regression in 1.6.2 testpipe on Windows
Hi all,
I've finally got around to using 1.6 and have come across a problem with
testpipe on Windows (built using MSYS2 and mingw32/64):
$ testall.exe -v testpipe
testpipe : Line 161: expected <0>, but saw <22>
FAILED 1 of 9
Failed Tests Total Fail Failed %
===================================================
testpipe 9 1 11.11%
The problem does not occur with v1.5.1 (last version I used).
The problem happens when it tries to set a timeout with
apr_file_pipe_timeout_set which fails with APR_EINVAL because the pipe was
opened blocking.
The pipes should not be blocking since they were set up with:
apr_procattr_io_set(procattr, APR_CHILD_BLOCK, APR_CHILD_BLOCK,
APR_CHILD_BLOCK);
However, it appears a bug was introduced in file_io/win32/pipe.c in
r1736523 (and r1734816 in trunk). That change introduced the new function
apr_file_pipe_create_pools() and refactored apr_file_pipe_create_ex() to
use it as follows:
APR_DECLARE(apr_status_t) apr_file_pipe_create_ex(apr_file_t **in,
apr_file_t **out,
apr_int32_t blocking,
apr_pool_t *p)
{
return apr_file_pipe_create_pools(in, out, APR_FULL_BLOCK, p, p);
}
So apr_file_pipe_create_ex() now ignores the "blocking" parameter passed to
it and only creates blocking pipes.
If "APR_FULL_BLOCK" is replaced with "blocking" then everything appears to
work as expected and the testpipe tests all pass.
As a diff:
==================
--- pipe.c-orig 2017-09-26 11:52:24.509293200 +0100
+++ pipe.c 2017-09-26 13:07:15.441143200 +0100
@@ -76,7 +76,7 @@
apr_int32_t blocking,
apr_pool_t *p)
{
- return apr_file_pipe_create_pools(in, out, APR_FULL_BLOCK, p, p);
+ return apr_file_pipe_create_pools(in, out, blocking, p, p);
}
APR_DECLARE(apr_status_t) apr_file_pipe_create_pools(apr_file_t **in,
==================
Cheers,
Steve
Re: Regression in 1.6.2 testpipe on Windows
Posted by Yann Ylavic <yl...@gmail.com>.
On Tue, Sep 26, 2017 at 2:56 PM, Steven Nairn <st...@gmail.com> wrote:
>
> I've finally got around to using 1.6 and have come across a problem with
> testpipe on Windows (built using MSYS2 and mingw32/64):
> $ testall.exe -v testpipe
> testpipe : Line 161: expected <0>, but saw <22>
> FAILED 1 of 9
> Failed Tests Total Fail Failed %
> ===================================================
> testpipe 9 1 11.11%
>
> The problem does not occur with v1.5.1 (last version I used).
>
> The problem happens when it tries to set a timeout with
> apr_file_pipe_timeout_set which fails with APR_EINVAL because the pipe was
> opened blocking.
Thanks, probably a bad copy/paste from [1].
Fixed in trunk with [2] and backported to upcoming 1.6.3 with [3].
Regards,
Yann.
[1] http://svn.apache.org/r1734816
[2] http://svn.apache.org/r1809753
[3] http://svn.apache.org/r1809754