zypper seg fault

Since a few days ago, zypper on my OpenSuSE 10.3 64bit system has been very broken :

# zypper refresh ; zypper lu
Refreshing 'Main Update Repository'
Segmentation fault
Segmentation fault

Rolling back to an earlier version from the update site hasn’t helped, and neither has blowing away it’s cache (rm -rf /var/cache/zypp/*).

I’ve reduced my list of active and auto-refresh repositories down to just this one and obviously it’s fairly core to fix :slight_smile:
Any ideas ?

You could try from su term

rpmdb --rebuilddb

No effect, but good idea:

rpmdb --rebuilddb

zypper refresh

Repository ‘Main Update Repository’ is up to date.
Segmentation fault

Post result of

zypper lr
# zypper lr
#  | Enabled | Refresh | Type   | Alias                                                             | Name
---+---------+---------+--------+-------------------------------------------------------------------+---------------------------
1  | No      | No      | rpm-md | X11:XGL                                                           | X11:XGL
2  | No      | No      | rpm-md | suse_mozilla                                                      | suse mozilla
3  | No      | No      | rpm-md | http://www2.ati.com/suse/10.3                                     | ATI Repository
4  | No      | No      | rpm-md | Subversion                                                        | Subversion
5  | No      | No      | rpm-md | http://ftp.skynet.be/pub/packman/suse/10.3/                       | Packman Repository
6  | No      | No      | yast2  | http://download.opensuse.org/repositories/openSUSE:10.3/standard/ | Main Repository (OSS)
7  | No      | No      | rpm-md | KDE:Backports                                                     | KDE:Backports
8  | Yes     | Yes     | rpm-md | http://download.opensuse.org/update/10.3/                         | Main Update Repository
9  | No      | No      | rpm-md | OpenOffice.org:STABLE                                             | OpenOffice.org:STABLE
10 | No      | No      | NONE   | Apache                                                            | Apache
11 | No      | No      | yast2  | openSUSE:10.3:NonFree                                             | openSUSE:10.3:NonFree
12 | No      | No      | yast2  | openSUSE-10.3-OSS-KDE 10.3                                        | openSUSE-10.3-OSS-KDE 10.3

My advice. Try removing them ALL. I know they are disabled.
Just make a note of what you have.
Delete everything and add back the main 3, oss, non-oss, updates. And try it again.
Add others back if needed.

edit:
If this fails - try running yast from level 3

I had this exact same issue removing each one:

# zypper rr  "http://ftp.skynet.be/pub/packman/suse/10.3/"
Segmentation fault
# zypper rr  "http://ftp.skynet.be/pub/packman/suse/10.3/"
Repository not found by given alias or URL.

I’m now using ‘software repositories’ from the YaST control panel to add in the updates repo,. I’ll then update (if req) before putting the others back.

Cheers - something was obviously confused deep in the bowels somewhere.

Bah, hasn’t helped :frowning:

# zypper refresh
Refreshing '10.3 updates'
Segmentation fault

Have you tried managing from the Yast GUI?

Or as I suggested from runlevel 3

The GUI does the same thing (except the fault appears in a pop up window).

I’ll try from a lower run level later.

chivertont wrote:

> Bah, hasn’t helped :frowning:
>
>
> Code:
> --------------------
> # zypper refresh
> Refreshing ‘10.3 updates’
> Segmentation fault
> --------------------

Check your version of libcurl4:


hpc02@stthpc:~> rpm -qa | grep libcurl4
libcurl4-7.16.4-16.4


Greetings,


Camaleón

#  rpm -qa | grep libcurl4
libcurl4-7.16.4-16.4

Oh, here is ‘strace -f zypper refresh’ in case it sparks anything in anyone:

write(1, "Repository \'10.3 updates\' is up "..., 41Repository '10.3 updates' is up to date.
) = 41
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
uname({sys="Linux", node="tom-X", ...}) = 0
writev(3, {NULL, 0}, {"2009-07-07 14:20:49 <1> tom-X"..., 186}], 2) = 186
write(3, "
", 1)                       = 1
mkdir("/var", 0755)                     = -1 EEXIST (File exists)
mkdir("/var/cache", 0755)               = -1 EEXIST (File exists)
mkdir("/var/cache/zypp", 0755)          = -1 EEXIST (File exists)
mkdir("/var/cache/zypp/raw", 0755)      = -1 EEXIST (File exists)
mkdir("/var/cache/zypp/raw/10.3_updates", 0755) = -1 EEXIST (File exists)
stat("/var/cache/zypp/raw/10.3_updates/repodata/repomd.xml", {st_mode=S_IFREG|0644, st_size=1231, ...}) = 0
stat("/var/cache/zypp/raw/10.3_updates/repodata/repomd.xml", {st_mode=S_IFREG|0644, st_size=1231, ...}) = 0
open("/var/cache/zypp/raw/10.3_updates/repodata/repomd.xml", O_RDONLY) = 6
read(6, "<?xml version=\"1.0\" encoding=\"UT"..., 8191) = 1231
read(6, "", 8191)                       = 0
close(6)                                = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
uname({sys="Linux", node="tom-X", ...}) = 0
writev(3, {NULL, 0}, {"2009-07-07 14:20:49 <0> tom-linu"..., 114}], 2) = 114
write(3, "
", 1)                       = 1
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
uname({sys="Linux", node="tom-X", ...}) = 0
writev(3, {NULL, 0}, {"2009-07-07 14:20:49 <0> tom-linu"..., 117}], 2) = 117
write(3, "
", 1)                       = 1
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
uname({sys="Linux", node="tom-X", ...}) = 0
writev(3, {NULL, 0}, {"2009-07-07 14:20:49 <0> tom-linu"..., 127}], 2) = 127
write(3, "
", 1)                       = 1
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
uname({sys="Linux", node="tom-X", ...}) = 0
writev(3, {NULL, 0}, {"2009-07-07 14:20:49 <1> tom-linu"..., 209}], 2) = 209
write(3, "
", 1)                       = 1
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
uname({sys="Linux", node="tom-X", ...}) = 0
writev(3, {NULL, 0}, {"2009-07-07 14:20:49 <1> tom-linu"..., 105}], 2) = 105
write(3, "
", 1)                       = 1
mkdir("/var", 0755)                     = -1 EEXIST (File exists)
mkdir("/var/cache", 0755)               = -1 EEXIST (File exists)
mkdir("/var/cache/zypp", 0755)          = -1 EEXIST (File exists)
open("/var/cache/zypp/zypp.db", O_RDWR|O_CREAT, 0644) = 6
fcntl(6, F_GETFD)                       = 0
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
fstat(6, {st_mode=S_IFREG|0644, st_size=68608, ...}) = 0
dup(6)                                  = 7
fcntl(6, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=0, len=1}) = 0
mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_32BIT, -1, 0) = 0x40000000
mprotect(0x40000000, 4096, PROT_NONE)   = 0
clone(Process 25614 attached
child_stack=0x40800240, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x408009e0, tls=0x40800950, child_tidptr=0x408009e0) = 25614
[pid 25464] futex(0x408009e0, FUTEX_WAIT, 25614, NULL <unfinished ...>
[pid 25614] set_robust_list(0x408009f0, 0x18) = 0
[pid 25614] fcntl(7, F_GETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=1, pid=0}) = 0
[pid 25614] _exit(0)                    = ?
Process 25614 detached
<... futex resumed> )                   = 0
close(7)                                = 0
lseek(6, 0, SEEK_SET)                   = 0
read(6, "SQLite format 3\0\4\0\1\1\0@  \0\0\0\1\0\0\0\0"..., 100) = 100
fcntl(6, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(6, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(6, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
access("/var/cache/zypp/zypp.db-journal", F_OK) = -1 ENOENT (No such file or directory)
fstat(6, {st_mode=S_IFREG|0644, st_size=68608, ...}) = 0
lseek(6, 0, SEEK_SET)                   = 0
read(6, "SQLite format 3\0\4\0\1\1\0@  \0\0\0\1\0\0\0\0"..., 1024) = 1024
lseek(6, 10240, SEEK_SET)               = 10240
read(6, "\r\0\0\0
\0$\0\0$\0j\0\373\1M\1\257\2\203\2\274\3\32\3\220\3\273\0 \0\0"..., 1024) = 1024
lseek(6, 13312, SEEK_SET)               = 13312
read(6, "\r\0\0\0\7\0\0\0\0\330\0011\1\253\2\0\2\315\2\370\3\325\0\357\0\257\0\257\0\0"..., 1024) = 1024
lseek(6, 21504, SEEK_SET)               = 21504
read(6, "\r\0\0\0\4\0\22\0\0\22\0\241\1\226\2(\0\267\201\f\22\7\0277+\1\201Cinde"..., 1024) = 1024
lseek(6, 26624, SEEK_SET)               = 26624
read(6, "\r\0\0\0\3\1\364\0\1\364\2i\2\340\1\360\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
lseek(6, 30720, SEEK_SET)               = 30720
read(6, "\r\0\0\0\2\1\4\0\1\4\3\177\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
lseek(6, 33792, SEEK_SET)               = 33792
read(6, "\r\0\0\0\3\0\320\0\0\320\2l\2\355\0O\0K\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
lseek(6, 37888, SEEK_SET)               = 37888
read(6, "\r\0\0\0\4\0W\0\0W\1\272\0025\2\303\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
lseek(6, 43008, SEEK_SET)               = 43008
read(6, "\r\0\0\0\4\0\250\0\0\250\1B\2_\3v\0\244\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
lseek(6, 48128, SEEK_SET)               = 48128
read(6, "\r\0\0\0\4\0d\0\0d\1\215\2/\3r\0`\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
lseek(6, 53248, SEEK_SET)               = 53248
read(6, "\r\0\0\0\5\0\311\0\0\311\1\311\2W\0033\3t\3\207\0L\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
lseek(6, 61440, SEEK_SET)               = 61440
read(6, "\r\0\0\0\5\1\25\0\1\25\1\216\2\247\2\362\3|\0\310\0D\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
lseek(6, 64512, SEEK_SET)               = 64512
read(6, "\r\0\0\0\1\0\357\0\0\357\0\232\0\232\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
lseek(6, 67584, SEEK_SET)               = 67584
read(6, "\r\0\0\0\4\0_\0\2\202\3\257\1N\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
fcntl(6, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
uname({sys="Linux", node="tom-X", ...}) = 0
writev(3, {NULL, 0}, {"2009-07-07 14:20:50 &lt;5&gt; tom-linu"..., 105}], 2) = 105
write(3, "
", 1)                       = 1
times({tms_utime=20, tms_stime=43, tms_cutime=53, tms_cstime=163}) = 1754458755
fcntl(6, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(6, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(6, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
access("/var/cache/zypp/zypp.db-journal", F_OK) = -1 ENOENT (No such file or directory)
fstat(6, {st_mode=S_IFREG|0644, st_size=68608, ...}) = 0
lseek(6, 24, SEEK_SET)                  = 24
read(6, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 16
times({tms_utime=20, tms_stime=43, tms_cutime=53, tms_cstime=163}) = 1754458755
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
uname({sys="Linux", node="tom-X", ...}) = 0
writev(3, {NULL, 0}, {"2009-07-07 14:20:50 &lt;5&gt; tom-linu"..., 127}], 2) = 127
write(3, "
", 1)                       = 1
times({tms_utime=20, tms_stime=43, tms_cutime=53, tms_cstime=163}) = 1754458755
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
uname({sys="Linux", node="tom-X", ...}) = 0
writev(3, {NULL, 0}, {"2009-07-07 14:20:50 &lt;5&gt; tom-linu"..., 152}], 2) = 152
write(3, "
", 1)                       = 1
lseek(6, 1024, SEEK_SET)                = 1024
read(6, "\r\0\0\0\1\3\372\0\3\372\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1024) = 1024
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3661, ...}) = 0
uname({sys="Linux", node="tom-X", ...}) = 0
writev(3, {NULL, 0}, {"2009-07-07 14:20:50 &lt;1&gt; tom-linu"..., 125}], 2) = 125
write(3, "
", 1)                       = 1
fcntl(6, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
close(6)                                = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++

chivertont wrote:

> Code:
> --------------------
> # rpm -qa | grep libcurl4
> libcurl4-7.16.4-16.4
>
> --------------------

It seems correct.

Try by making zypper more verbose:


zypper -vvv refresh


What about /var/log/zypper.log? Are you getting any error message there?

Greetings,


Camaleón

Run level 3 before or after reboot has no effect.

zypper -vvv refresh ; tail /var/log/zypper.log

Verbosity: 3
Initializing Target
Checking whether to refresh metadata for 10.3 updates
Downloading: http://download.opensuse.org/update/10.3/repodata/repomd.xml
\ Downloading
Refreshing ‘10.3 updates’
Downloading: http://download.opensuse.org/update/10.3/repodata/repomd.xml
| Downloading
.
.
.

  • Downloading [100%]
    Downloading: http://download.opensuse.org/update/10.3/repodata/primary.xml.gz
  • Downloading
    Segmentation fault
    2009-07-07 15:58:04 <1> tom-linux(8620) [zypp] PathInfo.cc(_Log_Result):295 recursive_rmdir /var/cache/zypp/raw/10.3_updatesQsy4Rx
    2009-07-07 15:58:04 <0> tom-linux(8620) [zypp] TmpPath.cc(~Impl):78 TmpPath cleaned up /var/cache/zypp/raw/10.3_updatesQsy4Rx{d 0755 0/0}
    2009-07-07 15:58:04 <1> tom-linux(8620) [zypper] zypper-sources.cc(refresh_repos):594 calling buildCache
    2009-07-07 15:58:04 <5> tom-linux(8620) [Measure] Measure.cc(Impl):152 START MEASURE(Check tables exist)
    2009-07-07 15:58:04 <5> tom-linux(8620) [Measure] Measure.cc(elapsed):174 ELAPSED(Check tables exist) 0 (u 0.00 s 0.00 c 0.00)
    2009-07-07 15:58:04 <5> tom-linux(8620) [Measure] Measure.cc(~Impl):160 MEASURE(Check tables exist) 0 (u 0.00 s 0.00 c 0.00) [0 (u 0.00 s 0.00 c 0.00)]
    2009-07-07 15:58:04 <1> tom-linux(8620) [zypp] CacheInitializer.cc(createTables):135 Initializing cache schema…
    2009-07-07 15:58:04 <1> tom-linux(8620) [zypp] CacheInitializer.cc(createTables):140 Schema size: 11557
    2009-07-07 15:58:04 <1> tom-linux(8620) [zypp] CacheInitializer.cc(CacheInitializer):62 Repository cache initialized
    2009-07-07 15:58:04 <1> tom-linux(8620) [zypp] CacheStore.cc(Impl):64 database /var/cache/zypp/zypp.db was just created

chivertont wrote:

> Run level 3 before or after reboot has no effect.
>
> # zypper -vvv refresh ; tail /var/log/zypper.log
> Verbosity: 3
> Initializing Target
> Checking whether to refresh metadata for 10.3 updates
> Downloading:
> http://download.opensuse.org/update/10.3/repodata/repomd.xml
> \ Downloading
> Refreshing ‘10.3 updates’
> Downloading:
> http://download.opensuse.org/update/10.3/repodata/repomd.xml
> | Downloading
> .
> .
> .
> * Downloading [100%]
> Downloading:
> http://download.opensuse.org/update/10.3/repodata/primary.xml.gz
> * Downloading
> Segmentation fault

I’m out of ideas :frowning:

Just a very, very, very wild guess…

Change that “http://” repo and use “ftp://”. For instance, I am using:

ftp://ftp.gwdg.de/linux/suse/opensuse/update/10.3/

And try again :-?

Greetings,


Camaleón

Can’t FTP through the proxy I have to use :frowning:
Thanks for your help. Maybe I’ll bite the bullet and ‘fix’ it by upgrading to 11.x …

Maybe consider some deletion of cache files, make backups first (/var/cache/zypp) seen in your log error amongst other things

Couldn’t see the point of keeping backups as the thing is obvious broken anyway.

Now reading Upgrade - openSUSE :slight_smile:

10.3 to 11.1
Best to New Install. Keep /home if you wish.
Consider kde3 if you use kde. kde4 may too much of a change at start. You can add kde4 later if you want to.