Bug 532575 - latest Factory update to aria2 broke zypper/YaST
Summary: latest Factory update to aria2 broke zypper/YaST
Status: VERIFIED FIXED
: 533546 535073 537108 (view as bug list)
Alias: None
Product: openSUSE 11.2
Classification: openSUSE
Component: libzypp (show other bugs)
Version: Factory
Hardware: Other Other
: P5 - None : Major (vote)
Target Milestone: ---
Assignee: Peter Poeml
QA Contact: E-mail List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-08-19 19:09 UTC by Forgotten User tAfYx3p_c_
Modified: 2009-11-23 14:28 UTC (History)
9 users (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments
aria2 debug log (working) (464.45 KB, text/x-log)
2009-08-20 16:35 UTC, Forgotten User tAfYx3p_c_
Details
aria2 debug log (non-working) (2.18 KB, text/x-log)
2009-08-20 16:36 UTC, Forgotten User tAfYx3p_c_
Details
arai2.stats (after non-working run) (588 bytes, application/octet-stream)
2009-08-20 16:37 UTC, Forgotten User tAfYx3p_c_
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Forgotten User tAfYx3p_c_ 2009-08-19 19:09:03 UTC
User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090730 SUSE/3.5.2-2.3 Firefox/3.5.2

After installing the last aria2 from Factory zypper/YaST are unable to download anything from the remote repositories. It looks like aria2c tries to connect to IPv6 address by default, but fails to do it.
Downgrading aria2 to the previous version fixes the problem.
Running aria2c from console results in the following output:

# aria2c http://mirror.yandex.ru/opensuse/factory/repo/oss/content

2009-08-19 23:03:03.139528 WARN - You may encounter the certificate verification error with HTTPS server. See --ca-certificate and --check-certificate option.

2009-08-19 23:03:03.140849 ERROR - CUID#6 - Download aborted. URI=http://mirror.yandex.ru/opensuse/factory/repo/oss/content
Exception: [AbstractCommand.cc:195] URI=http://mirror.yandex.ru/opensuse/factory/repo/oss/content
  -> [SocketCore.cc:287] Failed to connect to the host 2a02:6b8:0:201::1, cause: all addresses failed

Download Results:
gid|stat|avg speed  |path/URI
===+====+===========+===========================================================
  1| ERR|        n/a|http://mirror.yandex.ru/opensuse/factory/repo/oss/content

Status Legend:
(ERR):error occurred.

aria2 will resume download if the transfer is restarted.
If there are any errors, then see the log file. See '-l' option in help/man page for details.


Reproducible: Always

Steps to Reproduce:
1.
2.
3.
Comment 1 Jan Kupec 2009-08-20 08:02:52 UTC
I don't have any problem, maybe something in your setup? What's your aria2 version? Mine is:
$ rpm -qa aria2
aria2-1.5.1-1.1

(btw, pls don't touch the priority field, that's for the developers to set).
Comment 2 Peter Poeml 2009-08-20 08:21:23 UTC
Please attach a verbose log file for the current (non-working) and the previous (working) aria2c version.

Either as 

aria2c --log=aria2c.working.log http://mirror.yandex.ru/opensuse/factory/repo/oss/content
aria2c --log=aria2c.non-working.log http://mirror.yandex.ru/opensuse/factory/repo/oss/content


Or by editing /root/.aria2/aria2.conf and then running zypper.

Please also attach /var/cache/zypp/aria2.stats after the successful and the failed run.

Thanks!
Comment 3 Forgotten User tAfYx3p_c_ 2009-08-20 16:35:54 UTC
Created attachment 314347 [details]
aria2 debug log (working)
Comment 4 Forgotten User tAfYx3p_c_ 2009-08-20 16:36:34 UTC
Created attachment 314348 [details]
aria2 debug log (non-working)
Comment 5 Forgotten User tAfYx3p_c_ 2009-08-20 16:37:25 UTC
Created attachment 314349 [details]
arai2.stats (after non-working run)
Comment 6 Peter Poeml 2009-08-20 16:47:37 UTC
Thanks Antony! Will look at the logs in a bit.
Comment 7 Peter Poeml 2009-08-20 16:59:21 UTC
I realize that I should have read your initial report more closely. It already contained more information than I understood when I read it this morning. I overlooked that you directly accessed mirror.yandex.ru in the first place.


I can actually reproduce the bug exactly here:


 % aria2c http://mirror.yandex.ru/opensuse/packman/11.1/repodata/repomd.xml

2009-08-20 18:51:16.966576 WARN - You may encounter the certificate verification error with HTTPS server. See --ca-certificate and --check-certificate option.

2009-08-20 18:51:17.119902 ERROR - CUID#6 - Download aborted. URI=http://mirror.yandex.ru/opensuse/packman/11.1/repodata/repomd.xml
Exception: [AbstractCommand.cc:195] URI=http://mirror.yandex.ru/opensuse/packman/11.1/repodata/repomd.xml
  -> [SocketCore.cc:287] Failed to connect to the host 2a02:6b8:0:201::1, cause: all addresses failed

Download Results:
gid|stat|avg speed  |path/URI
===+====+===========+===========================================================
  1| ERR|        n/a|http://mirror.yandex.ru/opensuse/packman/11.1/repodata/repomd.xml

Status Legend:
(ERR):error occurred.

aria2 will resume download if the transfer is restarted.
If there are any errors, then see the log file. See '-l' option in help/man page for details.




mirror.yandex.ru resolves to four IPv4 addresses (in a round-robin fashion) and one IPv6 address:

 % host mirror.yandex.ru
mirror.yandex.ru has address 77.88.19.73
mirror.yandex.ru has address 77.88.19.74
mirror.yandex.ru has address 93.158.155.193
mirror.yandex.ru has address 77.88.19.68
mirror.yandex.ru has IPv6 address 2a02:6b8:0:201::1



Tatsuhiro, do you mind me taking you into Cc here? This looks indeed like a regression in aria2c 1.5.1 over 1.4.1.
Comment 8 Peter Poeml 2009-08-20 17:02:22 UTC
I'm happy to open an issue for this in the aria2c tracker, if you prefer!

Below is strace log from aria2c accessing mirror.yandex.ru. aria2c is run on openSUSE 11.0 here, with a caching nameserver on localhost.



connect(5, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, 28) = 0
fcntl64(5, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
gettimeofday({1250787374, 375391}, NULL) = 0
poll([{fd=5, events=POLLOUT, revents=POLLOUT}], 1, 0) = 1
send(5, "\300:\1\0\0\1\0\0\0\0\0\0\6mirror\6yandex\2ru\0\0\34"..., 34, MSG_NOSIGNAL) = 34
poll([{fd=5, events=POLLIN, revents=POLLIN}], 1, 5000) = 1
ioctl(5, FIONREAD, [208])               = 0
recvfrom(5, "\300:\201\200\0\1\0\1\0\6\0\1\6mirror\6yandex\2ru\0\0\34"..., 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, [16]) = 208
close(5)                                = 0
time(NULL)                              = 1250787374
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5
connect(5, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, 28) = 0
fcntl64(5, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
gettimeofday({1250787374, 378695}, NULL) = 0
poll([{fd=5, events=POLLOUT, revents=POLLOUT}], 1, 0) = 1
send(5, "\247\366\1\0\0\1\0\0\0\0\0\0\6mirror\6yandex\2ru\0\0\1"..., 34, MSG_NOSIGNAL) = 34
poll([{fd=5, events=POLLIN, revents=POLLIN}], 1, 5000) = 1
ioctl(5, FIONREAD, [244])               = 0
recvfrom(5, "\247\366\201\200\0\1\0\4\0\6\0\1\6mirror\6yandex\2ru\0\0\1"..., 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, [16]) = 244
close(5)                                = 0
open("/etc/gai.conf", O_RDONLY)         = 5
fstat64(5, {st_mode=S_IFREG|0644, st_size=2689, ...}) = 0
fstat64(5, {st_mode=S_IFREG|0644, st_size=2689, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb80c9000
read(5, "# Configuration for getaddrinfo("..., 4096) = 2689
read(5, "", 4096)                       = 0
close(5)                                = 0
munmap(0xb80c9000, 4096)                = 0
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 5
connect(5, {sa_family=AF_INET6, sin6_port=htons(0), inet_pton(AF_INET6, "2a02:6b8:0:201::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 ENETUNREACH (Network is unreachable)


This failed - okay. Now, aria2c connects to the other addresses, which works, but it keeps trying and gives up after trying all four addresses:



connect(5, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0
connect(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("93.158.155.193")}, 16) = 0
getsockname(5, {sa_family=AF_INET6, sin6_port=htons(58831), inet_pton(AF_INET6, "::ffff:83.133.126.38", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
connect(5, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0
connect(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("77.88.19.68")}, 16) = 0
getsockname(5, {sa_family=AF_INET6, sin6_port=htons(43340), inet_pton(AF_INET6, "::ffff:83.133.126.38", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
connect(5, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0
connect(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("77.88.19.73")}, 16) = 0
getsockname(5, {sa_family=AF_INET6, sin6_port=htons(35944), inet_pton(AF_INET6, "::ffff:83.133.126.38", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
connect(5, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) = 0
connect(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("77.88.19.74")}, 16) = 0
getsockname(5, {sa_family=AF_INET6, sin6_port=htons(43049), inet_pton(AF_INET6, "::ffff:83.133.126.38", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 0
close(5)                                = 0
socket(PF_NETLINK, SOCK_RAW, 0)         = 5
bind(5, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(5, {sa_family=AF_NETLINK, pid=3857, groups=00000000}, [12]) = 0
time(NULL)                              = 1250787374
sendto(5, "\24\0\0\0\26\0\1\3.\200\215J\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
recvmsg(5, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"8\0\0\0\24\0\2\0.\200\215J\21\17\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 116
recvmsg(5, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"@\0\0\0\24\0\2\0.\200\215J\21\17\0\0\n\200\200\376\1\0\0\0\24\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 128
recvmsg(5, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0.\200\215J\21\17\0\0\0\0\0\0\1\0\0\0\24\0\1\0\0\0\0\0"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
close(5)                                = 0
socket(PF_INET6, SOCK_STREAM, IPPROTO_TCP) = 5
setsockopt(5, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
fcntl64(5, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
connect(5, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "2a02:6b8:0:201::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 ENETUNREACH (Network is unreachable)
close(5)                                = 0
write(1, "\n", 1
)                       = 1
gettimeofday({1250787374, 389911}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
write(1, "2009-08-20 18:56:14.389911 ERROR"..., 1322009-08-20 18:56:14.389911 ERROR - CUID#6 - Download aborted. URI=http://mirror.yandex.ru/opensuse/packman/11.1/repodata/repomd.xml
) = 132



So finally, it logs the exception:


write(1, "Exception: [AbstractCommand.cc:1"..., 208Exception: [AbstractCommand.cc:195] URI=http://mirror.yandex.ru/opensuse/packman/11.1/repodata/repomd.xml
  -> [SocketCore.cc:287] Failed to connect to the host 2a02:6b8:0:201::1, cause: all addresses failed
Comment 9 Tatsuhiro Tsujikawa 2009-08-21 04:40:00 UTC
I fixed this bug in r1498 and yes this is a regression since 1.5.0.

When connecting to the first resolved address is failed, then aria2 don't try another one. This is the cause of bug.

In strace log, aria2 seems to connect to all resolved address, but it is not.

> connect(5, {sa_family=AF_INET6, sin6_port=htons(0), inet_pton(AF_INET6,
> "2a02:6b8:0:201::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1
> ENETUNREACH (Network is unreachable)
> 
> 
> This failed - okay. Now, aria2c connects to the other addresses, which works,
> but it keeps trying and gives up after trying all four addresses:
> 
> 
> 
> connect(5, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) =
> 0
> connect(5, {sa_family=AF_INET, sin_port=htons(0),
> sin_addr=inet_addr("93.158.155.193")}, 16) = 0
> getsockname(5, {sa_family=AF_INET6, sin6_port=htons(58831), inet_pton(AF_INET6,
> "::ffff:83.133.126.38", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) =
> 0
> connect(5, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) =
> 0
> connect(5, {sa_family=AF_INET, sin_port=htons(0),
> sin_addr=inet_addr("77.88.19.68")}, 16) = 0
> getsockname(5, {sa_family=AF_INET6, sin6_port=htons(43340), inet_pton(AF_INET6,
> "::ffff:83.133.126.38", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) =
> 0
> connect(5, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) =
> 0
> connect(5, {sa_family=AF_INET, sin_port=htons(0),
> sin_addr=inet_addr("77.88.19.73")}, 16) = 0
> getsockname(5, {sa_family=AF_INET6, sin6_port=htons(35944), inet_pton(AF_INET6,
> "::ffff:83.133.126.38", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) =
> 0
> connect(5, {sa_family=AF_UNSPEC, sa_data="\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, 16) =
> 0
> connect(5, {sa_family=AF_INET, sin_port=htons(0),
> sin_addr=inet_addr("77.88.19.74")}, 16) = 0
> getsockname(5, {sa_family=AF_INET6, sin6_port=htons(43049), inet_pton(AF_INET6,
> "::ffff:83.133.126.38", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) =
> 0
> close(5)                                = 0
> 

These attempt to connecting all resolved addresses were done by getaddrinfo() system call. Not by aria2's application code.
aria2's first failed attempt is way below:

>connect(5, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6,
>"2a02:6b8:0:201::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1
>ENETUNREACH (Network is unreachable)

It is interesting to know why getaddrinfo is connecting to these addresses, but it is not to related this issue. Anyway, the fix to this regression is in svn repository and the new release 1.5.2 is about to release.
Comment 10 Peter Poeml 2009-08-22 01:44:14 UTC
Marvellous. Thank you so much. I'm building updated packages and submit them directly afterwards.
Comment 11 Matwey Kornilov 2009-08-23 09:30:17 UTC
*** Bug 533546 has been marked as a duplicate of this bug. ***
Comment 12 Forgotten User tAfYx3p_c_ 2009-08-25 18:53:06 UTC
I'm happy to report that new package version resolves the issue.
Comment 13 Stephan Binner 2009-08-27 17:22:38 UTC
Where can those "updated packages" be found? Have they been submitted to Factory?
Comment 14 Stephan Binner 2009-08-28 09:56:34 UTC
*** Bug 535073 has been marked as a duplicate of this bug. ***
Comment 15 Peter Poeml 2009-08-31 11:24:48 UTC
aria2-1.5.2 is in Factory since quite some time.

Thanks to everyone involved!
Comment 16 Stephan Kulow 2009-09-07 10:31:04 UTC
*** Bug 537108 has been marked as a duplicate of this bug. ***
Comment 17 Frans Leerink 2009-09-07 11:24:50 UTC
Hello Stephan,

I had read through
http://en.opensuse.org/Bugs:Most_Annoying_Bugs_11.2_dev before installing, but I it did not pick that up as the course of the problem. I must say however that at the time of the install problem I had no access to that URL.

Reading through this bugreport it is still unclear to me how I can correct the problem preferably via yast. I understand that I need aria2-1.5.2 but how do I get that while Yast is not working. Sorry I am a simple openSUSE fan.

Regards,  Frans
Comment 18 Forgotten User 6Bw0Ifx-X6 2009-11-22 10:08:58 UTC
I installed OS11.2 gold on a friend's 64bit computer and got a similar problem.

Net connection is OK (I first disabled IPV6 with ipv6.disable=1), I can surf on the net, I can browse into the repos, but with zypper I cannot add/enable/refresh/install any repository.

See the forum discussion:
http://forums.opensuse.org/applications/425546-still-not-able-update.html

I think this bug should be reopened
Comment 19 Bernd Röbenack 2009-11-23 12:33:26 UTC
Hello together,

I had the problem too.
I did upgrade from openSuSE 10.3 to 11.0 by zypper
(add new repositories, zypper ref, zypper dup). All worked fine.
After this I did an update from 11.0 -> 11.1.
Zypper worked fine.
Then I did an update of zypper with adding the repos of 11.2 and enter "zypper inst zypper". After clening up different dependencies, "zypper dup" does not work anymore.
After I had restored my VM-Ware-Snapshot, I did a zypper dup without updating zypper by himself.
The Dist-Update worked fine, but after this I get allways the same error:

============================================0
ws002-6859-667:/home/de04566 # zypper ar ftp://ftp5.gwdg.de/pub/linux/suse/opensuse/update/11.2 openSuSE_Update
Repository 'openSuSE_Update' wird hinzugefügt [fertig]                                                         
Repository 'openSuSE_Update' erfolgreich hinzugefügt                                                           
Aktiviert: Ja                                                                                                  
Autoaktualisierung: Nein                                                                                       
URI: ftp://ftp5.gwdg.de/pub/linux/suse/opensuse/update/11.2                                                    

ws002-6859-667:/home/de04566 # zypper ref
Metadaten von Repository 'openSuSE_Update' werden abgerufen [\]/repodata/repomd.xml konnte von ftp://ftp5.gwdg.de/pub/linux/suse/opensuse/update/11.2 nicht abgerufen werden                                                                                  
Abbrechen, wiederholen, ignorieren? [a/w/i/?] (a): a                                                                           
Metadaten von Repository 'openSuSE_Update' werden abgerufen [Fehler]                                                           
Repository 'openSuSE_Update' ist ungültig.                                                                                     
Can't provide /repodata/repomd.xml : /repodata/repomd.xml konnte von ftp://ftp5.gwdg.de/pub/linux/suse/opensuse/update/11.2 nicht abgerufen werden                                                                                                            
Bitte überprüfen Sie, ob die für dieses Repository bestimmten URIs zu einem gültigen Repository verweisen.                     
Repository 'openSuSE_Update' wird aufgrund des obigen Fehlers übersprungen.                                                    
Die Repositories konnten aufgrund von Fehlern nicht aktualisiert werden. 
===================================

We have a proxy here, so I had to edit the /root/.curlrc at OSS10.3 to work.
This is why the 'ar'option of zypper work, but the ref option fails.

After some minutes of trying and searching the web, I had found the following hint on:
http://linux.derkeiler.com/Mailing-Lists/SuSE/2009-08/msg01072.html
-->
You can work around it by doing "export ZYPP_ARIA2C=0" and zypper dup
after that.
<--

Now "zypper ref" work again without any errors (also yast).
I have no idea of programming, but this solved my problem!

The aria2 version of my system was and still is 
aria2-1.5.2-2.3.1.i586 

If you want me to test anything, feel free to contact me.

I am not the only one with this problem, as Alvise C mentioned before.
Comment 20 Jan Kupec 2009-11-23 14:28:48 UTC
Alvise, Bernd, these new aria problems probably have different cause. Please create new bugreports. Try to reproduce the problem also directly with aria2c on the command line, and attach the resulting log, e.g.:

$ aria2c --log myaria2c.log ftp://ftp5.gwdg.de/pub/linux/suse/opensuse/update/11.2/repodata/repomd.xml

If it works directly with aria2c, at least attach your zypper.log.