[Bug 1154599] Re: getaddrinfo() returns -11 (EAI_SYSTEM) instead of -2

Barry Warsaw 1154599 at bugs.launchpad.net
Wed Apr 3 18:02:24 UTC 2013


On Apr 03, 2013, at 03:04 PM, Adam Conrad wrote:

>Colour me confused, but this seems to be behaving exactly as the manpage
>suggests it can.  Where is the actual bug in eglibc here?

It's a change in behavior somewhere between 2.13 and 2.17.

>It seems monumentally unclever for python to raise a different exception type
>depending on how gai() returns, which seems to be what's causing the headache
>here.

Except that it's been that way in Python for *years*.  It might be worth
changing this for 3.4, but it can't be changed in anything earlier.

OTOH, by Python 3.3 it probably makes no sense to catch socket.error directly
because of the exception hierarchy reorganization in PEP 3151.  Now,
socket.error *is* OSError and socket.gaierror is a subclass of OSError, so
going forward, it makes sense just to catch OSError when you don't care about
the distinction.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to eglibc in Ubuntu.
https://bugs.launchpad.net/bugs/1154599

Title:
  getaddrinfo() returns -11 (EAI_SYSTEM) instead of -2

Status in “eglibc” package in Ubuntu:
  New
Status in “python2.7” package in Ubuntu:
  New

Bug description:
  $ cat lookup.py
  #!/usr/bin/python
  import sys, socket
  names = ["slashdot.org", "foooooooooowhizzzzzzzz.com"]
  if len(sys.argv) > 1:
     names = sys.argv[1:]
  for iname in names:
      try:
          result = socket.getaddrinfo(iname, None, 0, 0, socket.SOCK_STREAM,
                                      socket.AI_CANONNAME)
          for (fam, stype, proto, cname, sockaddr) in result:
              sys.stdout.write("cname=%s, sockaddr=%s\n" % (cname, sockaddr))
      except socket.gaierror as error:
          sys.stderr.write("%s failed lookup" % iname)

  $ python2.7 lookup.py
  cname=slashdot.org, sockaddr=('216.34.181.45', 0)
  Traceback (most recent call last):
    File "/tmp/x.py", line 10, in <module>
      socket.AI_CANONNAME)
  socket.error: [Errno 2] No such file or directory

  shell returned 1

  $ dpkg -S /usr/bin/python2.7
  python2.7-minimal: /usr/bin/python2.7
  $ dpkg-query --show python2.7-minimal
  python2.7-minimal	2.7.3-16ubuntu1

  This is a behavioral change from quantal (2.7.3-5ubuntu4).

  ProblemType: Bug
  DistroRelease: Ubuntu 13.04
  Package: python 2.7.3-10ubuntu5
  ProcVersionSignature: Ubuntu 3.5.0-21.32-generic 3.5.7.1
  Uname: Linux 3.5.0-21-generic x86_64
  ApportVersion: 2.9.1-0ubuntu1
  Architecture: amd64
  Date: Wed Mar 13 09:52:55 2013
  EcryptfsInUse: Yes
  InstallationDate: Installed on 2011-10-19 (511 days ago)
  InstallationMedia: Ubuntu 11.10 "Oneiric Ocelot" - Release amd64 (20111012)
  MarkForUpload: True
  ProcEnviron:
   TERM=xterm
   PATH=(custom, no user)
   XDG_RUNTIME_DIR=<set>
   LANG=en_US.UTF-8
   SHELL=/bin/bash
  SourcePackage: python-defaults
  UpgradeStatus: Upgraded to raring on 2013-01-07 (64 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/1154599/+subscriptions




More information about the foundations-bugs mailing list