vaeth / eix

eix can access Gentoo portage ebuild information and description very quickly (using a local cache). It can also be used to access information on installed packages, local settings, and local and external overlays, and informs about changes in the tree
GNU General Public License v2.0
163 stars 12 forks source link

eix-update internal error since eix-0.35.0 #87

Closed rx80 closed 3 years ago

rx80 commented 3 years ago

Running eix-update (eix-0.35.0) fails:

Writing database file /var/cache/eix/portage.eix...
internal error: trying to shortcut non-hashed string

After downgrade to 0.34.12 it works as expected.

In both cases i removed existing databases before the run.

Cubittus commented 3 years ago

Same here running on latest ~amd64 Additionally, the database that is written is corrupt and causes all other eix utilities to fail:

# eix eix
error while reading from database: end of file

Downgrading to 0.34.12 and re-running eix-update fixes it.

asarubbo commented 3 years ago

I can reproduce too.

I can hit the bug while running eix-update and PORTDIR_OVERLAY points to guru overlay https://gitweb.gentoo.org/repo/proj/guru.git/log/?h=master

vowstar commented 3 years ago
Applying masks...
Calculating hash tables...
Writing database file /var/cache/eix/portage.eix...
internal error: trying to shortcut non-hashed string

same bug

zarMarco commented 3 years ago

Same error

mackal commented 3 years ago
#0  StringHash::get_index (this=this@entry=0x7fffffffc0b0, s="desktop") at eixTk/stringutils.cc:636
#1  0x000055555558f805 in Database::write_hash_string (errtext=0x0, s="desktop", hash=..., this=0x7fffffffbe90) at ./database/io.h:136
#2  Database::write_hash_words (this=this@entry=0x7fffffffbe90, hash=..., words=std::vector of length 10, capacity 16 = {...}, errtext=errtext@entry=0x0) at database/io.cc:191
#3  0x0000555555591b05 in Database::write_hash_words (errtext=0x0, words="desktop java-utils-2 estack edos2unix l10n wrapper eutils rpm xdg-utils xdg", hash=..., this=0x7fffffffbe90) at ./database/io.h:153
#4  Database::write_depend (this=0x7fffffffbe90, dep=..., hdr=..., errtext=0x0) at database/io_portage.cc:290
#5  0x0000555555593c6a in Database::write_version (this=0x7fffffffbe90, v=0x55555b6b8640, hdr=..., errtext=0x0) at database/io_portage.cc:235
#6  0x0000555555593dca in Database::write_package_pure (this=this@entry=0x7fffffffbe90, pkg=..., hdr=..., errtext=errtext@entry=0x0) at database/io_portage.cc:323
#7  0x0000555555593e26 in Database::write_package (this=this@entry=0x7fffffffbe90, pkg=..., hdr=..., errtext=errtext@entry=0x7fffffffc560) at database/io_portage.cc:331
#8  0x0000555555593f12 in Database::write_packagetree (this=this@entry=0x7fffffffbe90, tree=..., hdr=..., errtext=errtext@entry=0x7fffffffc560) at ./portage/package.h:547
#9  0x000055555564fa06 in update (outputfile=<optimized out>, cache_table=0x7fffffffc580, portage_settings=0x7fffffffc6b0, override_umask=<optimized out>, repo_names=..., exclude_labels=std::vector of length 0, capacity 0, statusline=0x7fffffffc5c0, errtext=0x7fffffffc560) at eix-update.cc:706
#10 0x0000555555654fe2 in run_eix_update (argc=argc@entry=3, argv=argv@entry=0x7fffffffccc8) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/g++-v11/bits/basic_string.h:186
#11 0x000055555556db37 in run_program (argv=0x7fffffffccc8, argc=3) at ./main/main.cc:177
#12 main (argc=3, argv=0x7fffffffccc8) at ./main/main.cc:232

Running in GDB.

Jannik2099 commented 3 years ago

The regression is in commit 66f13ec5c6a612bc60741d4423925fd787f06554

mackal commented 3 years ago

I can reproduce too.

I can hit the bug while running eix-update and PORTDIR_OVERLAY points to guru overlay https://gitweb.gentoo.org/repo/proj/guru.git/log/?h=master

Running -x guru doesn't error for me, so something about that overlay is causing the issue.

vaeth commented 3 years ago

Thanks for the report. The bug should be fixed in eix-0.35.1. It was triggered when an IDEPEND in some ebuild contained a word not present in any {,R,P,B}DEPEND; that's why it occurs only for certain overlays (which use already EAPI=8) and I missed it during testing.

ghost commented 3 years ago

Thanx for the quick fix, Martin! BTW: Thanx for voluntary maintaining eix - it's one of these tools I take for granted, until it breaks... ;)

vowstar commented 3 years ago

Thank you for the quick fix!