On Sun, 30 Nov 2014 17:36:04 +0100, Alessandro Ghedini wrote:

> On dom, nov 30, 2014 at 03:06:55 +0100, Tobias Frost wrote:
> > Am Sonntag, den 30.11.2014, 00:21 -0800 schrieb Tom Lee:

> > > Also, I feel like the "serious" severity is overstating the issue
> > > given that 0.11.0-4 builds fine in buildd/sbuild. Alessandro pointed
> > > out the periodic rebuilds would have revealed this issue otherwise.
> > 
> > > 
> > > If there are no objections I'd like to propose we adjust the severity
> > > of this bug to "normal" & leave the fix for this particular bug until
> > > after the Jessie freeze.
> > 
> > Here I can reprodcue the FTBFS locally with pbuilder 0.215+nmu3, so
> > I disagree. It maybe has not been detected *yet*?
> 
> What does this "yet" even mean? Except inside pbuilder, hiredis builds fine 
> [1].
> The fact that it fails *only* inside pbuilder (and the fact that hiredis is 
> not
> the only package in this situation) suggests that this is indeed a pbuilder 
> bug.
> I really don't see how this is release critical in any way on the part of the
> hiredis package.

While I tend to agree in general, here's an additional data point:
I rebuilt 0.11.0-4 in my sid amd64 cowbuilder chroot, which has
USENETWORK=yes (due to #753944) but firewalls off everything except
localhost during build. And in this environment I see a test failure:

make check
make[2]: Entering directory '/tmp/buildd/hiredis-0.11.0'
echo \
    "daemonize yes\n" \
    "pidfile /tmp/hiredis-test-redis.pid\n" \
    "port 56379\n" \
    "bind 127.0.0.1\n" \
    "unixsocket /tmp/hiredis-test-redis.sock" \
        | redis-server -
./hiredis-test -h 127.0.0.1 -p 56379 -s /tmp/hiredis-test-redis.sock || \
        ( kill `cat /tmp/hiredis-test-redis.pid` && false )
#01 Format command without interpolation: PASSED
#02 Format command with %s string interpolation: PASSED
#03 Format command with %s and an empty string: PASSED
#04 Format command with an empty string in between proper interpolations: PASSED
#05 Format command with %b string interpolation: PASSED
#06 Format command with %b and an empty string: PASSED
#07 Format command with literal %: PASSED
#08 Format command with printf-delegation (int): PASSED
#09 Format command with printf-delegation (char): PASSED
#10 Format command with printf-delegation (short): PASSED
#11 Format command with printf-delegation (long): PASSED
#12 Format command with printf-delegation (long long): PASSED
#13 Format command with printf-delegation (unsigned int): PASSED
#14 Format command with printf-delegation (unsigned char): PASSED
#15 Format command with printf-delegation (unsigned short): PASSED
#16 Format command with printf-delegation (unsigned long): PASSED
#17 Format command with printf-delegation (unsigned long long): PASSED
#18 Format command with printf-delegation (float): PASSED
#19 Format command with printf-delegation (double): PASSED
#20 Format command with invalid printf format: PASSED
#21 Format command by passing argc/argv without lengths: PASSED
#22 Format command by passing argc/argv with lengths: PASSED
#23 Error handling in reply parser: PASSED
#24 Memory cleanup in reply parser: PASSED
#25 Set error on nested multi bulks with depth > 7: PASSED
#26 Works with NULL functions for reply: PASSED
#27 Works when a single newline (\r\n) covers two calls to feed: PASSED
#28 Don't reset state after protocol error: PASSED
#29 Don't do empty allocation for empty multi bulk: PASSED
#30 Returns error when host cannot be resolved: FAILED
#31 Returns error when the unix socket path doesn't accept connections: PASSED

[..]

which seems to be the same as what Daniel originally reported.


Adding a printf statement to test.c shows:
#30 Returns error when host cannot be resolved: FAILED
ERROR: Temporary failure in name resolution

test.c currently looks for "Name or service not known" or "Can't
resolve: idontexist.local" but not for what I get here ...

Not sure what the best way forward is; adding a test for "Temporary
failure in name resolution" might be an option (and works
unsurprisingly):

#v+
--- a/test.c                                      
+++ b/test.c
@@ -286,7 +286,8 @@
     c = redisConnect((char*)"idontexist.local", 6379);
     test_cond(c->err == REDIS_ERR_OTHER &&
         (strcmp(c->errstr,"Name or service not known") == 0 ||
-         strcmp(c->errstr,"Can't resolve: idontexist.local") == 0));
+         strcmp(c->errstr,"Can't resolve: idontexist.local") == 0 ||
+         strcmp(c->errstr,"Temporary failure in name resolution") == 0));
     redisFree(c);
 
     /*test("Returns error when the port is not open: ");
#v-

But maybe there are better ways to fix this.


Cheers,
gregor

-- 
 .''`.  Homepage: http://info.comodo.priv.at/ - OpenPGP key 0xBB3A68018649AA06
 : :' : Debian GNU/Linux user, admin, and developer  -  http://www.debian.org/
 `. `'  Member of VIBE!AT & SPI, fellow of the Free Software Foundation Europe
   `-   NP: Spider Murphy Gang: Rock'n Roll Rendevouz

Attachment: signature.asc
Description: Digital Signature

Reply via email to