Szerteszana²

grin agymenései

Crash and illegal instruction in Electron, Chromium and friends

2023-06-21 12:47 írta grin

This post is a - hopefully - searchable note about a very ugly effect, where Chrome, Chromium, and everything based on its Electron backend just crash in various ways, and one possible cause, with the suggestion what to do (spoiler: panic!).

I was updating my system, which is Debian/unstable, so there was a good chance that some library is broken, or the display driver, or the Xserver, or maybe libc6 herself, because various parts were just upgraded.

Funny that I rarely have the time to play games, but today I needed to stay up so decided to check Skyrim again (which runs flawlessly under Linux+Steam, mind you; how technology have advanced…), and had to realise that the Steam UI just crash. Beta too. Then Chromium crashed. Then Signal desktop client, and I started dot the t's, cross the i's and connect them with lines… I mean, I started to be suspicious about Chrome/Electron, and indeed, most of the other stuff worked. So, I started looking.

The effect

First, Steam crashed[1]:

kernel: traps: steamwebhelper[16276] trap invalid opcode ip:7f454b9db794 sp:7ffe71c9afa0 error:0 in libcef.so[7f45490ef000+7770000]
kernel: traps: Compositor[31480] trap invalid opcode ip:7fc275ddb794 sp:7fc269df70c0 error:0 in libcef.so[7fc2734ef000+7770000]
kernel: traps: steamwebhelper[31009] trap invalid opcode ip:7f81b37db794 sp:7ffcc9e43520 error:0 in libcef.so[7f81b0eef000+7770000]
kernel: traps: Compositor[3035] trap invalid opcode ip:7f92c03db794 sp:7f92b43f73f0 error:0 in libcef.so[7f92bdaef000+7770000]
kernel: traps: Compositor[3522] trap invalid opcode ip:7f92c03db794 sp:7f92b43f7290 error:0 in libcef.so[7f92bdaef000+7770000]
kernel: traps: Compositor[3680] trap invalid opcode ip:7f92c03db794 sp:7f92b43f7290 error:0 in libcef.so[7f92bdaef000+7770000]
kernel: traps: Compositor[3856] trap invalid opcode ip:7f92c03db794 sp:7f92b43f73f0 error:0 in libcef.so[7f92bdaef000+7770000]
kernel: traps: Compositor[4029] trap invalid opcode ip:7f92c03db794 sp:7f92b43f73f0 error:0 in libcef.so[7f92bdaef000+7770000]
Then Chromium followed soon:
kernel: traps: ThreadPoolForeg[11069] trap invalid opcode ip:55579b3e2cdd sp:7f9f021fb6b0 error:0
kernel: traps: ThreadPoolForeg[11067] trap invalid opcode ip:55579b3e2cdd sp:7f9f029fc6b0 error:0
error:0
kernel:  in chromium[555796f53000+a30b000]
kernel:  in chromium[555796f53000+a30b000]
kernel:  in chromium[555796f53000+a30b000]
kernel: 
kernel: 
kernel: 
Nice!

Fiddle-fiddle

The first was trying to disable the Chrome sandbox (CEF) since the net wisdom mentioned that Chrome sandbox is very picky about library updates, and may react with a crash to an unknown library call. Turned out that Steam already did that by itself since this was an already "worked around" bug (in clone3() call if anyone interested). Anyway, disabling CEF didn't help (since it was already partially disabled).

The next was upgrading libraries, since it may have been caused by any incompatible library, but after updating everything Electron depends it still crashed. So I have updated the display driver, since the previous update may have partially done that and the closed-source nvidia driver sometimes make funky things when the kernel driver mismatches the xwindow libs; restarted X, to no avail though. Still crashing. After that I was worried that any library may cause this since I have only upgraded some code instead of the whole system and some libs may become incompatible with some other libs. It took a while to upgrade the system, but the effect was the same.

I was worried that the machine needed a reboot, mainly because these modern mainboards have the ugly habit of not booting MBR in various circumstances and grub mentioned in a deadpan voice that "there was no BIOS partition in sda so the boot wasn't updated", which means that if BIOS is happy with sdb then the system boots, if not then the system needs magic. So I really don't want to reboot right now.

Then went to sleep.

You did what?

So I was in the general unhappy mood, since I really didn't want to reboot, and a lot of stuff uses Electron, and since the libs were upgraded I was thinking that it's either a lib I need to downgrade, but it's a bit hard to point to one among the 5000 present, or I have to reboot the machine which may or may not work. I was also doing my work, and tried to start something (some compiler, actually, but that's not important), which failed in a way suggested that a disk is full and the temp files were not possible to save. Sometimes happens (the stuff always fills any storage, no matter the size), and I started looking. No, the disk is not full. None of them, in fact. But… what is this?!

# df
Filesystem   1K-blocks       Used   Available   Use% Mounted on
tmpfs          6662240    6662240           0   100% /dev/shm

You may not know /dev/shm. It is a cute temporary storage in shared memory, kind of /tmp/, which is fast, comparable in size to the total memory and usually quite empty.

Well not today! It is in memory, so it gets forgotten throughout reboots, but betwen them it is fairly stable: if someone puts a file there then it shall remove when it's not needed anymore. If specific someones create bazillions of gigantic clutter and ignore to remove then the storage (along with some of the available memory) is gone. Full. To the brim.

And of course it was… [drum roll] Steam+Electron!

Steam likes to crash, not badly, but since it juggles with various black magic stuff (including lot of shell scripts, an electron based UI, a patched-to-death WINE called Proton, various Vulkan shader pre-, post- and nobody-know-why-compiling, apart from weird updates) it sometimes throws in the towel and faints. However, as it turned out, it leaves its stuff behind. And not small stuff, mind you. Hundreds of megabytes per crash. And it takes only 5-6 of those to fill the poor storage. And it did.

And from then on nothing which uses the storage (and smart enough to notice that it's full, I'm looking at you, Electron!) was able to operate, and have been crashed in various absolutely meaningless and non-deterministic way. Call that impossibe to debug.

I see the tough life of the maintainers of Electron based stuff: they get these invalid opcode error reports and it may have been caused by absolutely anything.

Cleared /dev/shm (everything older than 2 days, minus /dev/shm/.tmpfs). Everything works. Damn.

Summary

Chrome/Electron crashes, illegal instructions in libcef.so or in ThreadPoolForeg(round) caused by the temporary storage /dev/shm being full; filled by crashed Electron-based code (Steam).


1. the visuals of the crash log superimposed on the keyword list on the side is part of the dramatic effect! :-)

Apukám, a szuperhős

2023-06-06 11:01 írta grin

– Légy szíves told arrébb Gödöllőt! – kérte anyukám apukámat. – szeretnék egy könyvet kihozni.

Premontrei gimnázium, Gödöllő

De apukám épp számolt, és bizonyosan nem ér rá ilyen földhöz ragadt problémák megoldására, így segítőkészen Gödöllő külvárosát óvatosan felszedtem, és arrébb tettem (akkor még nem tudtam, hogy valószínűleg a Kastélypark közelébe mozgattam a fél Alvéget), hogy anyukám – feltehetően átlépve a Rákos-patak pici tavacskáját – odajusson a könyvespolchoz.

Természetesen a Gödöllőiekkel nem szúrunk ki, így utána visszatettem őket szépen a helyükre. Talán észre sem vették, maximum a buszvezetők csodálkozhattak, hogy az utcák egyszer csak… de aztán már megint nem. Nem került be az újságba, és a nyolcvanas évek tévéhíradója sem tett róla említést.

Amúgy mindig óvatosan jártam Gödöllő utcáit. Az ember igyekszik nem rálépni a házakra, de hát egy 8-9 éves láb már elég nagy, az utcák pedig parányiak, szinte lehetetlen úgy lépni, hogy a házakat elkerülje az ember. Persze csak zokniban lépünk rájuk, mert az puha, és nem tapad a pucér talphoz minden utca. Az kellemetlen, amikor az ember lábához minden odaragad aztán hurcolja magával a szomszédságot is! Nyilván apukám sem szerette, amikor átrendezem a várost, és a jól kidolgozott zoknis közlekedési módszernek köszönhetően a helyiek relatív biztonságban voltak.

De még ők sem látták azt, amit én láttam. A csöveket. Mindenfelé mentek, az utcák alatt, a házak felé, de még a réten is. Pici csövecskék a házaktól, bele a nagyobb csövekbe, majd a mégnagyobbakba, és közben időnként kicsi és nagy dobozok, nyilakkal meg körökkel! És színes ceruzás vonalak is, ami egy 8 éves számára teljesen logikus, hiszen minek legyen az embernek csöve, ha az nem színes?!

Persze én nem tudtam volna a csöveket odarajzolni nekik. Ez egy tényleg nagy város, sok-sok csővel. Azokat apukám rajzolta oda.

Persze nem úgy, ahogy te rajzolnád! Csak fogni egy ceruzát és firkálni! Ugyan! Ne nevettess, kac-kac!

Az én apukámnak ilyen nagy rajztáblája volt, és vonalzók voltak benne! Meg szögmérő is! Meg olyan, na, izék, azokat nem tudom mire valók, de azok is. Természetesen én is tudok vele rajzolni, mert apukám megmutatta, én pedig rajzoltam vele, mondjuk nem csöveket, hanem házat meg utcát, mert a csöveket nem csak úgy odacsapod! A csöveket ki kell számolni!

Ó, ezt te nem is tudod, persze, mert elfelejtettem mondani. Ne haragudj! A csövek a legfontosabbak!

A csövek még nem léteznek. Apukám tervezi őket.

A csövekben gáz megy. Földgáz. Hogy-hogy honnan, hát a földből, te gyagya! Mert ott is voltam már, kiskunakárhol, ahol a bólogató olajkutak is vannak (fúú, az is tök érdekes, meg nagy és büdös, és ott apukám legjobb barátja csinál csodákat); de persze nem mindegyik onnan jön, mert ott nincs olyan sok, de a többi meg messziről jön ilyen bazi csöveken! Nagyobb a cső mint én vagyok! És ha felmászol rá akkor a bácsik nevetgélnek és azt mondják, hogy ha a főnökük ezt meglátná akkor se—— … fenéken rúgna mindenkit, és nehogy leessek mert akkor el is fenekelnek.

Na és a gáz az ugye az, amivel anyukám is főz, meg ami a konvektorban fűt. Amúgy mivel gáz, nem lehet látni, csak érezni, hogy büdös (de apukám azt is elmondta, hogy a gáz nem is büdös, hanem egy iszonyú büdösséget fújnak bele[1], amivel egyszer megviccelték egy munkatársát akire mérgesek voltak, és egy majdnem üres fiolát bedobtak az autójába, és hónapokig „gázszag” volt még a környékén is, ezen nagyon sokat nevettünk, de azt hiszem hogy a munkatársa nevetése nem lehetett teljesen őszinte, bár én úgy képzeltem, hogy mérges volt de az én apukám mindenkinél erősebb volt, ezért nem verekedtek csak morogtak egymás felé, gondolom, mint a dühös kutyák).

De nem lehet csak úgy csöveket odatenni. Apukám elmagyarázta. Ha figyelsz, elmagyarázom neked, majdnem úgy, mintha ő mondta volna, már amennyire persze értettem, de majd ha nagy leszek, akkor én is fogom úgy tudni mint ő, és akkor majd gyere vissza és elmagyarázom jól!

Szóval te azt gondolod, hogy a csőbe belefújják a gázt, és az kijön a végén, de nem! A gáz ugyanazt csinálja, mintha folyékony lenne, mintha vizet öntenél a csövön át. Ó, te azt gondolod, hogy a víz is csak úgy folyik a csőben! De nem!

Laminal and turbulent gas flow

A cső fala ilyen recés, mint a beton, ami felkarcolja a térdemet. És ezekbe a recékbe beleakad a víznek, meg a gáznak a belseje, és lelassítja. De a gáz közepe nem ér hozzá, a széle meg igen, és elkezdenek az oldalán pici örvények születni! És az egész széle egy csomó kis örvény, ami lassítja a gázt! Amikor bemegy a csőbe, akkor jó erősen bele kell pumpálni (nagy nyomással, mint a porszívó amikor fordítva szereled össze és fújja a levegőt a csövön, mert az is gáz!), hogy amikor ezek az örvények lelassítják akkor is kijusson a másik oldalon. Vagy ilyesmi.

Texas TI-59

És apukám ezeket az örvényeket ki tudta számolni. Meg hogy milyen vastag a cső, és milyen vastag az örvény. Meg hogy áramlik benne a gáz. Meg hogy a gáz milyen gyors itt és amott, milyen a nyomása az elején meg a végén, és hogy mekkora cső kell az elején hogy a végén még lehessen vele főzni! Ilyen nagy képletekkel, meg a Texas számológéppel, aminek piros a kijelzője és szalag jön belőle, ha épp nem fogyott el.

A dobozok, amiket mondtam, azok meg a nyomást változtatják, hogy visszategyék, ami elfogyott, vagy éppen lecsökkentsék, mielőtt bemegy a házba, hogy ne repüljön el a gáztűzhelyről az edény vagy ne fújja ki az embereket az ablakon! A papíron ezek kicsik, de van olyan baazinagy meg egészen picike is.

És ezekből kijött, hogy melyik cső milyen vastag, meg hogy kanyarodik-e, meg hogy hol kell neki doboz. És hogy hogyan jut el mindenhova, onnan, ahol már van oda, ahol még nincs. Nyilván!

Egyre több cső volt a térképen, amin járkáltam a nagy szobában, és amiket időnként apukám felszedett, majd időnként visszapakolt. Amikor már nem fért rá több cső sehova, akkor készen volt a város, és a papírok elindultak azokhoz a bácsikhoz, akik a gödröket ásták a csöveknek, akik odavitték, hegesztették (nem szabad nézni! van nekik ilyen szemüvegük, de nekem adtak egy fekete üveglapot, azon át szabad), meg akik majd végig összerakják az egészet.

Amiből majd az emberek házaiba megy a gáz, amivel fűteni fognak télen, és főzni (akár nyáron is).

A rajzolt csövekből igazi csövek leszenek! Amit apukám odarajzolt.

Mert apukám mérnök!

Gervai István (1939-2020)


Etil-merkaptán, modern nevén Etántiol

Neeva, the Google Killer (again)

2022-11-08 10:31 írta grin

Yet another "google killer" and "the next google" is starting. It called Neeva, and it claims that it is:

  • free
  • ad-free
  • private
  • customizable
  • can search personal accounts (mail, calendar, documents)
  • users can register for greatesterest experience

Without concentrating at how their search works (which would require some insight of their actual hardware and architecture) let me just concentrate on the first things first: their Terms of Service. Basically I am making notes to myself, but you may read them if you like.

Ad-free

Not really. If you choose the "Free" plan (or didn't register), then you get 50 searches per month ad-free, after that you get, guess what, advertisements.

Search personal accounts

Not really. It is "Pesonal account---", singular, since you can search one such accounts in the free plan.

Free

Not really. You will notice that pretty fast when you try to use your third device… since one neeva account is limited to maximum 2 devices in the free plan.

Not USA? Go away.

Are you an US citizen? Your lucky day! But if you happen to live outside the US you better stay away from Neeva since you're "breaking the law"!

The ToS clearly states (section 4): You may use the Services only if you are 18 years or older, a resident of the United States, and capable of forming a binding contract with Neeva, and not otherwise barred from using the Services under applicable law.

Will it stay "free"?

It may. Or not. ToS says (section 6): Our Free Basic Tier Services are currently free to use

Registration

I guess that by registering you restrict yourself to the limits of the free plan, eg. ads after 50 search, limited to 2 devices, etc.

Architecture

I may update this section if I had some time to dig up information.

KIMAGA együttes

2022-10-11 10:51 írta grin
KIMAGA együttes - Hideg Van

Hol vagyok?
Megfagyok!
Dimitríj halkan így nyafog.
Hallgatom
Margit bácsit az ágyamon.
Szaratov
Jégszekrényünk hűt nagyon!

Fú a szél
Hullahopp...
A mélyhűtőben farkasok!
Hol vagyok?
Dimitríj halkan megfagyott...
Elfeledtem
Elzárni a jégcsapot!

Ezt a paródiát az 1979-es szilveszteri műsorra készítették, és az Egymillió Foltos Hangjegy című műsor utolsó száma volt.

Az előadó a Gúnya együttes: Lehr Ferenc, Rácz Mihály, Köllő Miklós. A parodizált szám pedig az Omega együttes „Léna” című száma volt.

Szovjet tudósok sétának az utcán…

2022-09-19 23:36 írta grin

A Szovjet Központi Akadémia három tudósa (akik természetesen a Szovjet Kommunista Párt kiemelt személyiségei) sétálnak az utcán. Egyszer csak meglátnak valamit a földön. Odamennek, nézik. Megszólal az első:

- Ez szerintem szar.

A második megcsóválja a fejét:

- Elnézését kérem tanult kollégámnak, de véleményem szerint ez nem szar.

A harmadik is csóválja a fejét:

- Szerintem sem az. Talán nézzük meg az állagát?

Odaguggolnak, és mindegyik alaposan megtapogatja.

- Én továbbra is állítom, hogy ez szar. - mondja az első.

- Véleményem szerint sajnos ez nem felel meg a valóságnak. - sajnálkozik a második.

A harmadik hümmög:

- Nem, véleményem szerint sem.

Megszagolgatják. És a harmadik is a fejét csóválja:

- Nos, mégis úgy gondolom, hogy szerintem is szar. - de a középső csak nem ért velük egyet, hát megegyeznek, hogy megkóstolják. Mindegyik kap egy darabot, értőn megvizsgálják. Az első mondja:

- Elvtársaim, ez bizonyosan szar.

A második is bólogat:

- Szerintem minden kétséget kizáróan.

A harmadik hosszan gondolkozik, majd bólint:

- Be kell látnom, elvtársaim, hogy meghajlok érveik előtt, és egyetértek, hogy a jelek szerint ez tényleg szar! - majd megkönnyebbülten hozzá teszi:

- És milyen jó, hogy nem léptünk bele!

Szerteszana²

3

Szerteszana²

grin agymenései