Instalace končí chybou (Segmentation Fault - opět)

Jste dítě štěsteny, buďte rád. Mně to hází SegFault ať instaluji přes Luci web, tak i z SSH příkazové řádky. A že na výléčení této chyby obnova z SD karty nepomáhá, to jsem sem už psal. Na to bude nejlepším lékařem Turris team a (snad?) příští release TurrisOS.

Tak jsem byl nucen ještě jednou udělat reset a bohužel to vypadá, že se nějaký balíček při předchozím resetu neaktualizoval hned, ale až později, po resetu jsem skončil úplně stejně se segmentation fault. Tímto bych se přidal k ostatním s prosbou k Turris teamu o co nejrychlejší opravu.

Zdravím vývojový team v novém roce. Postupně jsem vyzkoušel jak testovací, tak noční buildy, pořád nic. Obvykle na opravy chyb nespěchám, chápu, že chybička se vloudí a že všechno chce svůj čas, nicméně tohle je podle mě docela problém, prakticky se s turrisem nedá nic dělat, některé balíčky se sice i s následným segfaultem nainstalují a fungují, ale systém o nich neví, což je dost problém při různých závislostech, jiné se nedají nainstalovat vůbec. Na chybu v /usr/lib/opkg/status to nevypadá, spíše na chybu přímo v binárce opkg. Nebylo by možné tam vrátit starší verzi (opkg, případně i /usr/lib/opkg/status, pokud se měnil formát), pokud funguje, alespoň to doby, než se problém vyřeší, ať se dá na turrisu alespoň něco rozumně nainstalovat? Já jsem se, stejně jako někteří další, snažil tuto chybu řešit mimo jiné obnovou z SD karty a mám uplně čistý systém a rád bych tam zpět svou konfiguraci ;-). Přidávám se tedy s velkou prosbou o co nejrychlejší řešení.

@TurrisTeam
Možná souvislost? https://github.com/openwrt/packages/issues/3343

Tady to asi stejně asi moc nečtou, nebo pokud čtou tak nereagují. Na twitteru píšou že wifi je priorita. Bylo mi doporučeno posílat to na technickou potvoru tak zkuste email na tech.support@turris.cz.

Po trose zkoumani to vypada, ze se to tyka spatneho merge atributu Provides: u baliku z aktualniho systemu a baliku z feedu - tento patch nejspis opravuje ten samy problem. Aktualni oprava pomoci checku if(pkg->provides[i] != NULL) uplne neresi problem u zdroje.

Jeste par informaci pro reprodukovani - segfaultuje opkg info pro baliky, ktere jsou nainstlovane a zaroven maji ve feedu Provides: polozku. Najit je lze treba takto:

find /var/opkg-lists -type f |
  xargs zcat |
  grep -e Package: -e Provides: |
  grep -B1 Provides: |
  grep Package: |
  sort |
  join -t$'\t' \
    - \
    <( opkg status | grep Package: | sort )

U mne:

Package: libdb47
Package: libffmpeg

Verze:

root@turris:~# opkg --version
opkg version 0.1.8
root@turris:~# cat /etc/turris-version
3.4

Zdá se, že se brzy dočkáme nové verze TurrisOS … viz changelog, který se dnes uzavřel s verzí 3.5

Bohužel to nevypadá, že by se v této verzi řešil opkg problém. Díky LIBORM za nasměrování, právě jsem ověřil následující rovnák-na-ohýbák, tedy z nouze HACK. Pokud potřebujete jako já čistý turris dostat do provozního stavu, stačí v /usr/lib/opkg/status zapoznámkovat pomocí hashe (#) nebo rovnou odstranit celé balíčky libdb47 a libffmpeg a někam bokem si je zkopírovat. Samozřejmě za podmínky, že vámi instalované balíčky nejsou závislé, ani zprostředkovaně na dvou výše uvedených. Potom instalace čehokoliv, včetně závislostí funguje, pokud nenainstalujete balíček dle popisu LIBORM, tedy s prázdným Provides:. Nezapomeňte po dokončení opět odpoznámkovat, respektive zpět dopsat zapoznámkované/ostraněné balíčky :slight_smile: Předpokládám, že výsledek výše uvedeného procesu by měl být validní i pro opravený opkg až se ho dočkáme.

Nightly opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-20_mpc85xx.ipk funguje…

Mě nefunguje, po opkg update sice není segfault ale Cannot install package…, stejné jako ve verzi 19 zmíněné výše.

Takže to v 3.5 nevyřešili ? Ach jo a to jsem to chtěl flashnout z sdkarty, takto se s tím budeme trápit dál.

Podle chagelogu ve v3.5 není zmíněn balíček opkg, ale kdo ví, třeba budeme příjemně překvapeni :wink:

https://gitlab.labs.nic.cz/turris/openwrt/commit/3c059ca4e0260d2875c74f9bfbe22857a819e561

V changelogu to sice je uvedeno, ale chyba ještě není opravena. Budeme si muset na opravu ještě chvíli počkat, ale mělo by se to dostat do 3.5

U mě se mezitím situace zhoršila, včera “zabodoval” ČEZ a jeho 15-ti minutový výpadek proudu dokončil dílo zkázy. Od té doby neodesílám data uCollect, chvílemi nejde LuCI a chvíli Foris, neberou heslo, SSH naštěstí jde…

2017-01-06T14:37:02+01:00 err ucollect[26765]: Signal 14/0/128 on addr (nil)
2017-01-06T14:37:02+01:00 crit ucollect[26765]: Got signal 14 with context (nil) (<none>), aborting
2017-01-06T14:45:03+01:00 warning watchdog[]: Restarted ucollect
2017-01-06T14:45:03+01:00 info ucollect[28630]: Initializing emergency signal handlers
2017-01-06T14:45:03+01:00 info ucollect[28630]: Creating a main loop
2017-01-06T14:45:03+01:00 info ucollect[28630]: Creating uplink
2017-01-06T14:45:03+01:00 info ucollect[28630]: Initializing PCAP (in) on lo
2017-01-06T14:45:03+01:00 info ucollect[28630]: Initializing PCAP (out) on lo
2017-01-06T14:45:03+01:00 info ucollect[28630]: Initializing PCAP (in) on pppoe-wan
2017-01-06T14:45:03+01:00 info ucollect[28630]: Initializing PCAP (out) on pppoe-wan
2017-01-06T14:45:03+01:00 info ucollect[28630]: Loading plugin library libplugin_ucollect_badconf_25.so
2017-01-06T14:45:03+01:00 info ucollect[28630]: Installing plugin Badconf with api version 0
2017-01-06T14:45:03+01:00 info ucollect[28630]: Loading plugin library libplugin_ucollect_bandwidth_21.so
2017-01-06T14:45:03+01:00 info ucollect[28630]: Installing plugin Bandwidth with api version 0
2017-01-06T14:45:03+01:00 info ucollect[28630]: Loading plugin library libplugin_ucollect_count_28.so
2017-01-06T14:45:03+01:00 info ucollect[28630]: Installing plugin Count with api version 0
2017-01-06T14:45:03+01:00 info ucollect[28630]: Loading plugin library libplugin_ucollect_fake_22.so
2017-01-06T14:45:03+01:00 info ucollect[28630]: Installing plugin Fake with api version 0
2017-01-06T14:45:03+01:00 info ucollect[28630]: Loading plugin library libplugin_ucollect_flow_32.so
2017-01-06T14:45:03+01:00 info ucollect[28630]: Installing plugin Flow with api version 2
2017-01-06T14:45:03+01:00 info ucollect[28630]: Loading plugin library libpluglib_ucollect_diffstore_1.2.so
2017-01-06T14:45:03+01:00 info ucollect[28630]: Loading plugin library libplugin_ucollect_fwup_12.so
2017-01-06T14:45:03+01:00 info ucollect[28630]: Installing plugin Fwup with api version 2
2017-01-06T14:45:03+01:00 info ucollect[28630]: Loading plugin library libpluglib_ucollect_diffstore_1.2.so
2017-01-06T14:45:03+01:00 info ucollect[28630]: Loading plugin library libplugin_ucollect_refused_13.so
2017-01-06T14:45:03+01:00 info ucollect[28630]: Installing plugin Refused with api version 0
2017-01-06T14:45:03+01:00 info ucollect[28630]: Loading plugin library libplugin_ucollect_sniff_18.so
2017-01-06T14:45:03+01:00 info ucollect[28630]: Installing plugin Sniff with api version 0
2017-01-06T14:45:03+01:00 info ucollect[28630]: Loading plugin library libplugin_ucollect_spoof_8.so
2017-01-06T14:45:03+01:00 info ucollect[28630]: Installing plugin Spoof with api version 0
2017-01-06T14:45:03+01:00 info ucollect[28630]: Changing remote uplink address to api.turris.cz:5679
2017-01-06T14:45:03+01:00 info ucollect[28630]: Sending login credentials enabled
2017-01-06T14:45:03+01:00 info ucollect[]: Last message 'Sending login creden' repeated 5 times, supressed by syslog-ng on turris
2017-01-06T14:45:03+01:00 info ucollect[28630]: Unloading plugin library
2017-01-06T14:45:03+01:00 info ucollect[28630]: Running the main loop
2017-01-06T14:45:03+01:00 info ucollect[28630]: Reconnecting to api.turris.cz:5679 now
2017-01-06T14:45:03+01:00 info ucollect[28630]: Socat started
2017-01-06T14:47:03+01:00 err ucollect[28630]: Signal 14/0/128 on addr (nil)
2017-01-06T14:47:03+01:00 crit ucollect[28630]: Got signal 14 with context (nil) (<none>), aborting
2017-01-06T14:55:03+01:00 warning watchdog[]: Restarted ucollect
2017-01-06T14:55:03+01:00 info ucollect[30472]: Initializing emergency signal handlers

Pořád do kola, restart nepomohl, restart uCollect taky ne, nainstalovat nic nejde…

“To je situace…” … “plekélní viď…Václave…”

Ať se dívám, jak se dívám, včera k večeru byl uzavřen changelog k verzi 3.5 a opkg tam nevidím.

EDIT:
Včera chyba opravena 9c97d5ecd795709c8584e972bfdf3aee3a5b846d-17 of package opkg, DIKY !!! :slight_smile:

1 Like

Ahoj lidi. Taky mi Turris vrací segfault při pokusu o instalaci balíčků, a našel jsem jakýsi postup jak to prý opravit.
Zatím jsem nezkoušel, ale pokud by si někdo chtěl pohrát… http://silenci.cz/forum.php?act=6&showforum=0&thread=5&page=1 Jediné co se mi na tom na první pohled nelíbí je zmíněné příliš benevolentní nastavení práv na 777 ( což je, jak každý ví, ještě o kousek větší zlo než obávané 666 ) :slight_smile:

Jarda

Zdravím. To co zde píši rozhodně není oficiální návod, ale pokud jste ochotný udělat kvůli instalaci softwaru takový krok jako smazat celou opkg databázi, tak raději doporučím něco jiného. Segfault pochází z kódu, který pracuje s /usr/lib/opkg/status a kdykoliv se může vrátit dokud se neopraví skutečný problém v kódu. Ale opkg download by měl fungovat bez problémů. Bude to asi otrava, ale pokud potřebujete jen nainstalovat jeden balíček, tak je možné použít opkg-trans. Tedy v důsledku stáhnout balíček pomocí opkg a nainstalovat pomocí opkg-trans.

opkg update
opkg download opkg-trans
opkg-trans -a opkg-trans_49_mpc85xx.ipk

Samozřejmě toto znamená, že závislosti řeší Franta rekurzivní uživatel, takže ne optimální, ale snad se nám opkg podaří opravit. Odvážnější mohou zkusit touto metodou nainstalovat nový updater a ten pak následně umožňuje instalaci software bez opkg pomocí přidání Install "pkg" řádku do /etc/updater/user.lua (ale toto je skutečně alternativa jen pro odvážné, uvádím jen pro úplnost).

3 Likes

Tak jako pochopte že Vy si chybu opravíte v rámci nightly buildu ale my ostatní jsme ze z kombinace opkgate a wifigate naprosto zoufalí.

2 Likes