Open attuska opened 1 year ago
Szerintem inkább a -march=native -mtune=native okozza a gondot, mivel ez készít natív, azaz az adott CPU-ra optimalizált kódot.
Ezt nem lehet az AMD processzorok hibájának, vagy egyes INTEL processzorok hibájául felróni, mert ez az illegális utasítási hiba már jelentkezett más progiknál is, nem csak AMD procin, hanem INTEL procin is. Volt egy időszak, mikor az O3 optomatizációt kellett kicserélni O2-re, amit abbahagytunk egy ideje, az Ofast típust nem is néztük sohase. Most megnézem a trigger appimage csomagot is kiváncsiságból. Ha aNem néztem más progikat, de emlékeim szerint van még jó pár, melyek z jó, akkor nagy a kérdés, hogy nálunk mi más?? Nem néztem más progikat, de emlékeim szerint volt még jó pár.
A trigger-rally appimage sem indul ezen a masinán. Éppúgy nem biztonságos ez az appimage, mert örökölt ablakkezelő rendszert használ, mint az etlegacy is. Ez utóbbi viszont megy az Intel CPU-s masinán, most megnézem ezen is ez utóbbi progi mindegyik változatát is.
Az etl flathubos változata vígan megy minden rendszeremen. Az etlagacy csomagunk már elérhetetlen nagyon helyesen.
https://github.com/uhulinux/ub-ubk4/issues/89#issuecomment-1336483472 Akkor talán arra kellene rákerestetni a csomagokban és likvidálni bennük az ilyet. Az ilyen hiba akkor kiküszöböltethető, ennek kipróbálását megtehetem, de ehhez kellne nekem egy általad készített csomag amit feltelepítek, ha az megy, akkor remélhetőleg ez meggyógyult.
Ezt a teljes full rebuild sem hozta helyre, ami várható volt.
#89 (comment) Akkor talán arra kellene rákerestetni a csomagokban és likvidálni bennük az ilyet. Az ilyen hiba akkor kiküszöböltethető, ennek kipróbálását megtehetem, de ehhez kellne nekem egy általad készített csomag amit feltelepítek, ha az megy, akkor remélhetőleg ez meggyógyult.
Épeszű fejlesztő nem tesz ilyet. Amúgy pedig az OPTIMS felülbírálható, tehát egy 'ub_make OPTIMS=' elvileg helyrerakja.
No meg akkor jön az, ami anno a python2-nél volt, hogy nem mindegy, ki fordítja? Hagyjuk már.
https://github.com/uhulinux/ub-ubk4/issues/89#issuecomment-1337349803 Mi nem fejlesztők, hanem csomagolók vagyunk csupán. Akkor talán kihajítás helyett ezt az OPTIMS -t kellene felülbírálnunk a trigger-rally csomag készítésénél. Az mégsem várható el a még meglévő kevés usertől, hogy nekik is ugyanolyan CPU legyen a masinájukban, mint ami a csomag készítőjének masinájában van. Én találkoztam ilyennel a VICE esetében többször is a c128 parancs futtatásakor az én szintén kétmagos Intel processzoros gépemen, A csomagot Imre csinálta, vagy te. Újrafordítottam mindig, és rögtön helyrejött és az nálatok is futott, vagy ki sem próbáltátok.
Én biztos, hogy pl. egy trigger-rally, vagy vice esetében nem nézek ilyesmit. Nekem emulátorból elég a virtualbox, a játékokból pedig a tsc és a zaz, bár gondolkozom rajta, hogy kidobom őket. Van gond és nyűg épp elég a játékok és emulátorok spéci hülyeségei nélkül is.
A trigger rally appimage az Intel GPU-s masinán sem megy, a csomagunk is illegális utasítást észlel. Nyilván az appimage is más CPU -val készült, mással, mint amik nekem vannak. Ha meg akarjuk tartani, akkor ki kell belőle irtani ezt a beleégetett optimatizálást. Én képtelen vagyok leellenőrizni az eredményt, mivel nekem más CPU -im vannak, és nem a saját gépemre fordítok csomagot, így, módosítás nélkül az egész játék kuka! Aki használni akarja, az rakja fel a saját gépére, arra optimalizálva. Így, ahogy van nem lehet belőle univerzális, minden CPU-n futó csomagot csinálni belőle sehova semmilyen disztribúción!
Te vagy az egyetlen, aki ilyen gondot jelzett, szóval nyugodtan lefordíthatod magadnak.
Lehet, hogy más meg sem próbálta a trigger-rally-t. Én nem használom, alig van egy-két játék, amit használok, nekem nem kell. Maradjon felőlem úgy ahogy van. Ha valakinek majd problémája akad, vele, akkor majd jelzi.
Én úgy látom, hogy a 2 játék sor, a 03-16 (emuátorok), és a 03-12 (development) tele van olyan cuccokkal, amiket senki nem használ. Szóval ezeket simán lehetne ritkítani.
Felőlem kihajíthatod mind, én nem teszem. A választék bővítésére vannak csupán, sokan fáradoztak valaha a csomagok elkészítésével és nem csupán saját célra. Az UBK3-at, vagy az UBUNTU-t illetve annak származékait fogom majd ajánlani az esetleges hiányolóknak. A végén az egész UBK4-et csak te fogod egyedül használni.
Akkor úgy lesz. Nem működő cuccoknak nincs értelme. Ha a trigger-rally fordításának módosításához is én kellek, akkor hadd döntsek arról, akarok-e foglalkozni vele.
A trigger-rally-t módosítottam, csomagot felraktam. https://github.com/uhulinux/ub-ubk4/commit/aa14c4a37c95412da844b552d7c6189bf3b0f9fa
A tulip is kidobandó! Az intel dual CPU-n ez van: attila@derp-x8664:~$ gdb tulip GNU gdb (GDB) 12.1 Copyright (C) 2022 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-pc-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: https://www.gnu.org/software/gdb/bugs/. Find the GDB manual and other documentation resources online at: http://www.gnu.org/software/gdb/documentation/.
For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from tulip... (No debugging symbols found in tulip) (gdb) r Starting program: /usr/bin/tulip [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". [New Thread 0x7fffe502b6c0 (LWP 11090)] [New Thread 0x7fffdf3a56c0 (LWP 11091)] [New Thread 0x7fffdeb816c0 (LWP 11092)] [New Thread 0x7fffd7fff6c0 (LWP 11093)] [New Thread 0x7fffd77fe6c0 (LWP 11094)] [New Thread 0x7fffd6ffd6c0 (LWP 11095)] [New Thread 0x7fffd67ba6c0 (LWP 11096)] [New Thread 0x7fffd5fb96c0 (LWP 11097)] [Thread 0x7fffd67ba6c0 (LWP 11096) exited]
Thread 1 "tulip" received signal SIGILL, Illegal instruction. 0x00007fffd459b8c6 in ?? () from /usr/bin/../lib/../lib/tulip/libOGDFPlugins-5.6.3.so (gdb) bt
from /usr/bin/../lib/../lib/tulip/libOGDFPlugins-5.6.3.so
--Type
from /usr/bin/../lib/libtulip-gui-5.6.so
(gdb) q A debugging session is active.
Inferior 1 [process 11087] will be killed.
Quit anyway? (y or n) y attila@derp-x8664:~$
Véletlen futottam be ebbe a tulip gondba, a frissebb és ezen a gépen fordítoitt simán megy. Nem rakom fel. A letöltött Appimage sem működik.
Talán a te laptottyodon megy a tárolónéli, ha nem, akkor neked is laptottyot kell cserélni mert ez a hiba nindenképp CPU güggő kód opimalizálási gond.
A másik lehetőség, hogy sorravesszük az összes csomagot, és amelyik illegális utasításba fut, azt mind kidobjuk.
Vagy el kell felejteni az -march=k8 gcc opciót. Az is simán okozhat gondokat, és talán a debian használja csak. Nálam amúgy megy, de gőzöm sincs, mire való. Akár ki is dobhatjuk.
Nekem sem kell ez a tulip, de valami épeszűt ki kellene találni erre az optimatizációra, mert bármikor bárki belefuthat bármelyik csomagnál, aki nem épp az ő gépére fordítottat használja. Úgy vélem, hogy a programok karbantarói, fejlesztő csak arra koncentrálnak, hogy mindenki a saját gépére fordítja az ápoltjukat. Mi, UHU linux csomagkészítők pedig nem! Az mégsem megy, hogy minden fejlesztő, karbantartó figyelmét erre felhívjuk erre a tényre. Az sem, hogy valamennyi csomagunkat temérdek hardveren kipróbáljuk.
A mostani helyzetnek egy előnye azért van: így mindjárt kiderül, ha egy csomag nem szükséges / nem megfelelő opciókat használ alapból / túl problémás. Persze az igazi kérdés az, hogy ugyanaz (?) az uhubuild ugyanazzal a gcc-vel és alap opciókkal miért készít más kódot? Lehet, hogy az UB_CFLAGS az ub_compile scriptbe kellene az ub_configure helyett? És vissza kellene tenni bele az -march=k8 opciót? Mert a tulip ugye cmake-s. Ettől függetlenül azért ilyesminek nem lenne szabad előfordulnia.
"Persze az igazi kérdés az, hogy ugyanaz (?) az uhubuild ugyanazzal a gcc-vel és alap opciókkal miért készít más kódot? Lehet, hogy az UB_CFLAGS az ub_compile scriptbe kellene az ub_configure helyett? És vissza kellene tenni bele az -march=k8 opciót? Mert a tulip ugye cmake-s." Ennyire nem vagyok otthon ebben, csak felfigyeltem újból egy problémánkra. Főleg a cmake idegen nekem. De az már a második cmake-s cucc, amivel nem bírok. Most fordítottam le az AMD CPU-s masinámra ezt (szintén befrissítve), ezen is megy, valamit lépni kell.
Nem maga a cmake a gond, hanem az, hogy nem autotools-os a cucc.
Autotools-nál az ub_configure tartalmaz egy ilyet: UB_CFLAGS="-O2 -m64 -mtune=generic ${CFLAGS:-}"
De ha nincs configure, mert épp cmake-s a cucc, akkor ez a cflag nincs beállítva. Talán ez a gond. De csak talán, mert semmi nem biztos...
Erről a tulip-ról már volt egy issue-m. Volt még egy rakás másról is, ami épp a kezem ügyébe került. (VICE, eduke32, openttd, satöbbi ) Az esetleges leendő build tesztelése csak kooperációban lehetséges, többféle CPU-n kipróbálva a binárist.
Jut eszembe: rengeteg cmake-s cucc van, ami teljesen jó, ilyen pl. a teljes kde és lxqt. Szóval nem itt lesz a hiba.
A saját gépemen fordított példány simán megy, mivel az én gépemben más a CPU, mint azon, amelyen a letölthető kód készült!
Van egy ilyen sor a trigger-rally/src/GNUMakefile fájlban:
OPTIMS ?= -march=native -mtune=native -Ofast
Ezek szerint a -Ofast optimatizációval a generált kód nem minden CPU által értelmezhető!