abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 17:44 | IT novinky

    Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,809 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější superpočítač v Evropě JUPITER Booster s výkonem 1,000 exaFLOPS je na čtvrtém místě. Nejvýkonnější český superpočítač C24 klesl na 192. místo. Karolina, GPU partition klesla na 224. místo a Karolina, CPU partition na 450. místo. Další přehledy a statistiky na stránkách projektu.

    Ladislav Hagara | Komentářů: 0
    dnes 17:22 | IT novinky

    Microsoft představil Azure Cobalt 200, tj. svůj vlastní SoC (System-on-Chip) postavený na ARM a optimalizovaný pro cloud.

    Ladislav Hagara | Komentářů: 0
    dnes 12:00 | IT novinky

    Co způsobilo včerejší nejhorší výpadek Cloudflare od roku 2019? Nebyl to kybernetický útok. Vše začalo změnou oprávnění v jednom z databázových systémů a pokračovalo vygenerováním problém způsobujícího konfiguračního souboru a jeho distribucí na všechny počítače Cloudflare. Podrobně v příspěvku na blogu Cloudflare.

    Ladislav Hagara | Komentářů: 5
    včera 23:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) první RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.

    Ladislav Hagara | Komentářů: 1
    včera 23:22 | Komunita

    Eugen Rochko, zakladatel Mastodonu, tj. sociální sítě, která není na prodej, oznámil, že po téměř 10 letech odstupuje z pozice CEO a převádí vlastnictví ochranné známky a dalších aktiv na neziskovou organizaci Mastodon.

    Ladislav Hagara | Komentářů: 0
    včera 19:44 | Nová verze

    Byla vydána nová major verze 5.0 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v obsáhlých poznámkách k vydání. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 14:00 | Upozornění

    Cloudflare, tj. společnost poskytující "cloudové služby, které zajišťují bezpečnost, výkon a spolehlivost internetových aplikací", má výpadek.

    Ladislav Hagara | Komentářů: 10
    včera 04:22 | Pozvánky

    Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou

    … více »
    SoutezKasiopea | Komentářů: 1
    včera 04:11 | Nová verze

    Byla vydána nová verze 2.52.0 distribuovaného systému správy verzí Git. Přispělo 94 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    17.11. 18:00 | Nová verze

    VKD3D-Proton byl vydán ve verzi 3.0. Jedná se fork knihovny vkd3d z projektu Wine pro Proton. Knihovna slouží pro překlad volání Direct3D 12 na Vulkan. V přehledu novinek je vypíchnuta podpora AMD FSR 4 (AMD FidelityFX Super Resolution 4).

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (19%)
     (18%)
     (23%)
     (15%)
     (23%)
     (15%)
     (17%)
    Celkem 369 hlasů
     Komentářů: 16, poslední 12.11. 18:21
    Rozcestník

    Dotaz: Segmentation fault pri štarte aplikácie normálnym userom

    24.3.2021 08:30 pupala | skóre: 21
    Segmentation fault pri štarte aplikácie normálnym userom
    Přečteno: 2462×
    Programátor na windows v Lazaruse naprogramoval aplikáciu a skompiloval ju pre linux cross kompilátorom na linux x86_64 target. Aplikácia mi beží pokiaľ ju spustím ako užívateľ root. Ak ju spustím ako normálny user. Vyhlási segmentation faul. Okamžite. Pri ladení som zistil pomocou strace, že padne na použití execve ( program ) EPERM = -1 (Operation not permited) . V GDB som nastavil "catch throw" následne run a program okamžite spadol na segfault, s "no stack", takže s bt nič. Nie som programátor, takže netuším čo by som mal hľadať. Chcem mu však dať niečo, čoho by sa ako windows programátor vedel chytiť, aby to opravil. To vyzerá, že to spadne ešte pred volaním funkcie main (). Selinux mám nenastavený. Skomunikoval som s ním, aby cross kompiloval elementárny "Hello world" bez akýchkoľvek knižníc a stav rovnaký. Ako root funguje aj Hello world, ako bežný user SEGFAULT. Vezerá to, ako keby progrram štartoval na adrese do ktorej normálny user nemá prístup. Ak tušíte niekto, čo by to mohlo byť, resp. ako to opraviť, poprosím o nakopnutie. Ďakujem.

    Řešení dotazu:


    Odpovědi

    24.3.2021 09:20 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Asi by som ten program vyskúšal skompilovať na Linuxovom desktope pomocou Lazarusu z repozitárov, a následne tam aj spustiť. Nech sa vylúči problém inštalačného balíka, alebo crosskompilácie.
    24.3.2021 10:35 pupala | skóre: 21
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Toto skúsim, vypýtam si kód a skompilujem to na Linux-e priamo. Len budem nastaviť všetko ako vo windows. Aby sedeli verzie, knižnice. Neviem, či budú rovnaké tie čo mám v Ubuntu 20.10. Uvidím. Len ma mätie, že pod root-om to funguje. Sú v tom kóde nejaké chyby následne, ale pod root-om beží(aj v debuggeri). Ďakujem zatiaľ.
    24.3.2021 18:25 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Pokiaľ je s problém doťahať presné verzie dynamických knižníc, tak by som odporučil to zlinkovať staticky.
    24.3.2021 09:38 X
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Co jsem pochopil, krom toho, ze od toho odrazuje Lazarus wiki je, ze musis mit sladene verze knihovnen na obou systemech. Osobne pokud to nebude delat neco slozitejsiho napsal bych to v necem normalnejsim..
    24.3.2021 10:45 pupala | skóre: 21
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Ten odkaz som prisudzoval kompilácii na Linux-e pre windows target . Skôr som očakával toto: https://wiki.lazarus.freepascal.org/Cross_compiling#From_Windows_to_Linux . Čo sa týka zladenia knižníc, nepredpokladal som, že môže nastať situácia, kedy to pod root-om beží a pod normal userom nie. Jedine, že by sa normal user nedostal ku všetkým knižniciam,ku ktorým sa dostane root. A takýto stav môže nastať, ako to najrýchlejšie zistím, či sa nejedná práve o toto? Ďakujem.
    24.3.2021 14:38 z_sk | skóre: 34 | blog: analyzy
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Jedine, že by sa normal user nedostal ku všetkým knižniciam,ku ktorým sa dostane root. A takýto stav môže nastať, ako to najrýchlejšie zistím, či sa nejedná práve o toto?
    Pochybujem, existencia kniznic a externych funkcii volanych sa overuje.

    Zistis:
    # ldd PATH_TO_FILE
    ldd /bin/bash
    ldd `which bash`
    PATH_TO_FILE moze byt nie len program, ale aj kniznica .o.

    Lahsie bude nainstalovat Linux alebo pouzi Windows Subsystem for Linux (zrejme Ti bude stacit bez problemov WLS 1).
    debian.plus@protonmail.com
    24.3.2021 13:42 martin-ux
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Debugoval si ju ako user alebo ako root? Je ta binarka setuid?

    Hned na zaciatok vypis so strace -vf /path/to/binary moze napovedat viac.

    V dmesg by ti mal segfault zapisat -- zazdielaj nech vidime. Pripadne sprav ulimit -c unlimited a spusti to znova. Ked budes mat core file daj:
    gdb /path/to/binary /path/to/core
    a potom v samotnom gdbbt. Tieto vypisy zazdielaj.

    Takto povedat tazko, moze to byt vela roznych veci.
    24.3.2021 15:06 pupala | skóre: 21
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    strace -vf /home/rony/app/juke 
    execve("/home/rony/app/juke", ["/home/rony/app/juke"], ["SHELL=/bin/bash", "SESSION_MANAGER=local/ares:@/tmp"..., "WINDOWID=50331655", "QT_ACCESSIBILITY=1", "COLORTERM=truecolor", "XDG_CONFIG_DIRS=/etc/xdg/xdg-pla"..., "XDG_SESSION_PATH=/org/freedeskto"..., "LANGUAGE=sk:en_US", "MANDATORY_PATH=/usr/share/gconf/"..., "LC_ADDRESS=sk_SK.UTF-8", "LC_NAME=sk_SK.UTF-8", "SSH_AUTH_SOCK=/tmp/ssh-RLdoOyVyX"..., "SHELL_SESSION_ID=c22f7b898e7b451"..., "DESKTOP_SESSION=plasma", "LC_MONETARY=sk_SK.UTF-8", "SSH_AGENT_PID=7260", "GTK_RC_FILES=/etc/gtk/gtkrc:/hom"..., "XCURSOR_SIZE=24", "XDG_SEAT=seat0", "PWD=/home/rony/app", "XDG_SESSION_DESKTOP=KDE", "LOGNAME=rony", "XDG_SESSION_TYPE=x11", "GPG_AGENT_INFO=/run/user/1000/gn"..., "XAUTHORITY=/home/rony/.Xauthorit"..., "GTK2_RC_FILES=/etc/gtk-2.0/gtkrc"..., "HOME=/home/rony", "SSH_ASKPASS=/usr/bin/ksshaskpass", "LC_PAPER=sk_SK.UTF-8", "LANG=sk_SK.UTF-8", "LS_COLORS=rs=0:di=01;34:ln=01;36"..., "XDG_CURRENT_DESKTOP=KDE", "KONSOLE_DBUS_SERVICE=:1.147", "KONSOLE_DBUS_SESSION=/Sessions/2", "PROFILEHOME=", "XDG_SEAT_PATH=/org/freedesktop/D"..., "KONSOLE_VERSION=200802", "KDE_SESSION_UID=1000", "LESSCLOSE=/usr/bin/lesspipe %s %"..., "XDG_SESSION_CLASS=user", "TERM=xterm-256color", "LC_IDENTIFICATION=sk_SK.UTF-8", "DEFAULTS_PATH=/usr/share/gconf/p"..., "LESSOPEN=| /usr/bin/lesspipe %s", "LIBVIRT_DEFAULT_URI=qemu:///syst"..., "USER=rony", "COLORFGBG=15;0", "KDE_SESSION_VERSION=5", "PAM_KWALLET5_LOGIN=/run/user/100"..., "DISPLAY=:0", "SHLVL=1", "LC_TELEPHONE=sk_SK.UTF-8", "LC_MEASUREMENT=sk_SK.UTF-8", "XDG_VTNR=1", "XDG_SESSION_ID=10", "XDG_RUNTIME_DIR=/run/user/1000", "LC_TIME=sk_SK.UTF-8", "QT_AUTO_SCREEN_SCALE_FACTOR=0", "XCURSOR_THEME=breeze_cursors", "XDG_DATA_DIRS=/usr/share/plasma:"..., "KDE_FULL_SESSION=true", "PATH=/usr/local/sbin:/usr/local/"..., "DBUS_SESSION_BUS_ADDRESS=unix:pa"..., "KDE_APPLICATIONS_AS_SCOPE=1", "LC_NUMERIC=sk_SK.UTF-8", "KONSOLE_DBUS_WINDOW=/Windows/1", "OLDPWD=/home/rony/lazarus-projek"..., "_=/usr/bin/strace"]) = -1 EPERM (Operácia nie je povolená)
    +++ killed by SIGSEGV +++
    Chyba segmentácie
    

    Toto bolo ako user. Ulimit je unlimited. Core nevygenerované, takže core do gdb neviem dať.
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from ./juke...
    (gdb) run
    Starting program: /home/rony/app/juke 
    During startup program terminated with signal SIGSEGV, Segmentation fault.
    (gdb) bt
    No stack.
    (gdb) 
    

    alebo s catch throw
    For help, type "help".
    Type "apropos word" to search for commands related to "word"...
    Reading symbols from ./juke...
    (gdb) catch throw
    Catchpoint 1 (throw)
    (gdb) run
    Starting program: /home/rony/app/juke 
    During startup program terminated with signal SIGSEGV, Segmentation fault.
    (gdb) bt
    No stack.
    (gdb) 
    
    GDB som použil tiež ako user, ako root sa to rozbehne aj v debuggeri. Aj aplikácia ako root beží. Skúsil som "Hello word" skompilovaný cross kompilátorom u kolegu - ako root ide, ako user nie. Rovnako ako tá appka. Skompiloval som to na linuxe ide OK pod oboma kontami. Už sme našli, že programátor používal nižšiu verziu freepascalu a cross kompilátora. Takže ide appku skompilovať s novým. Bez ohľadu na to, že pôvodná kompilácia bola starším kompilátorom, je otázka prečo to ako root ide a ako user nie. Problém sme vyriešili, ale nie sme veľmi múdrejší. Ako sa dá k tomuto dôjsť inak ako metódou pokus - omyl. Z vyskúšaného, resp. z otestovaného nevieme dospieť k tomu, že problém je nižšiu verziou pascalu prípadne jeho cross kompilátorom resp. nejakou chybou v nich. Ďakujem za pomoc.
    24.3.2021 15:50 martin-ux
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Tak s nicim som nepomohol. Ak je to setuid tak rozumiem, ze crash sa nevygeneroval. Ak sa vygeneroval mohol ho este chytit systemd (coredumpctl ukaze, pripadne priamo vo /var/lib/systemd/coredump.

    Ten dmesg (resp. /var/log/messages) tiez zaloguje crash. To iste by vlastne na zaciatku ukazalo aj gdb.

    Ak by som si mal tipnut tak akokeby aplikacia neosetruje, ze nieco moze vratit permission denied a neicializovany premmenu pouziva dalej. Ale to je len tip.
    24.3.2021 20:18 pupala | skóre: 21
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    rony@ares:~/app$ date
    St 24. marec 2021, 20:00:13 CET
    rony@ares:~/app$ find /home/rony/app/ -perm -4000 -print 
    rony@ares:~/app$ ./juke
    Chyba segmentácie
    rony@ares:~/app$ dmesg | tail -n 20
    dmesg: read kernel buffer failed: Operácia nie je povolená
    rony@ares:~/app$ sudo dmesg | tail -n 20
    [sudo] heslo pre používateľa rony: 
    [   91.416889] wlp4s0: send auth to f4:92:bf:77:05:fa (try 1/3)
    [   91.418155] wlp4s0: authenticated
    [   91.418844] wlp4s0: associate with f4:92:bf:77:05:fa (try 1/3)
    [   91.426568] wlp4s0: RX AssocResp from f4:92:bf:77:05:fa (capab=0x11 status=0 aid=3)
    [   91.429181] wlp4s0: associated
    [   91.554014] IPv6: ADDRCONF(NETDEV_CHANGE): wlp4s0: link becomes ready
    [  102.184578] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
    [  102.227910] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
    [  102.228870] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
    [  102.316419] Bluetooth: RFCOMM TTY layer initialized
    [  102.316427] Bluetooth: RFCOMM socket layer initialized
    [  102.316433] Bluetooth: RFCOMM ver 1.11
    [  145.170893] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
    [  145.176705] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
    [  145.177285] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
    [  145.177858] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
    [  145.177884] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
    [  153.748940] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
    [  153.752558] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
    [  153.752927] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7
    rony@ares:~/app$ coredumpctl
    TIME                            PID   UID   GID SIG COREFILE  EXE
    Wed 2021-03-24 16:37:45 CET    7673  1000  1000  11 present   /home/rony/.ditec/dlauncher-bin/dLauncher
    rony@ares:~/app$ ulimit
    unlimited
    rony@ares:~/app$
    

    Tu je všetko, binárka nie je SUID, coredump sa nevytvorí, /var/log/messages nemám, ale vlastne namiesto neho mám /var/log/dmesg. dmesg číta tento. Ale aj ten je bez záznamu. Ulimit je unlimited. /var/crash je tiež prázdny. Teraz už je to OK, keď programátor použil novší kompilátor. Ale keby to nezafungovalo, teraz by som bol úplne bezradný (samozrejme pokúsil by som sa to skompilovať u seba). Preto hľadám, spôsob ako to odhaliť, ale ako vidíte, žiadna stopa v systéme. A vlastne aj keď sme to už nejako opravili, nie sme múdrejší. Nevieme prečo to pre root-a fungovalo a pre normálneho usera nie.
    Řešení 1× (pupala (tazatel))
    24.3.2021 20:37 X
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Otestuj tu padajici binarku pod userem s:
    echo 0 > /proc/sys/vm/mmap_min_addr
    24.3.2021 21:49 pupala | skóre: 21
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Chová sa to ako pri spustení pod root-om. Spadne na rovnakom mieste, ako pod root-m. Ale to preto, že nemám nainštalované všetky knižnice. To je OK. Ale aplikácia sa spustila, čo je hlavné. A funguje aj to Hello word, čo tiež nefungovalo. Ďakujem. Pozerám, že je to prevencia pred nejakými útokmi od lokálnych ne-root userov. Ak som to pochopil správne. V tom prípade bol použitý cross kompilátor bez nejakého prepínača, ktorý tomu zabraňuje, alebo obsahoval nejakú chybu, keďže v novšou verziou to chodí korektne aj s cross kompiláciou. V dotaze som niečo takéto predpokladal. V predposlednej vete, ale nevedel som svoj predpoklad nijako overiť. Vďaka. Teraz to už do seba zapadá.
    24.3.2021 22:08 martin-ux
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Moze byt cesta k dumpom ina. Co ti vypise coredumpctl info ?
    24.3.2021 22:22 pupala | skóre: 21
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Len dump toho ditecLauncheru, takže cesta je dobrá /var/lib/systemd/coredump. V sysctl.conf to mám smerované do /var/crash. Coredumpctl som nainštaloval až poobede.
    24.3.2021 22:32 martin-ux
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Ok. Vies poslat vystup readelf -h /path/to/juke a ldd /path/to/juke ? Pozeram spatne na ten strace, ti ho ani nedovoli urobit. Posli pls strace aj pod rootom. Zaujimave je preco nemas coredump ak mas ulimit -c nastaveny na unlimited. Este je mozne ze ak je to C++ tak to chytil exception handler a ten coredump nevygeneroval (opat tipujem).
    24.3.2021 22:46 pupala | skóre: 21
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Program je vo freepascale. Program je vo freepascale. Po tomto návode mi to zafungovalo korektne.
    24.3.2021 22:55 martin-ux
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Ok, zda sa teda, ze freepascal program realne alokuje page0, system nedovoli a preto padne. Zda sa, ze aplikacia vobec nekontroluje ci danu pamat moze vobec alokovat.

    Page0 by som rozhodne nepovoloval na masine co pouzivas do internetu pripadne zdielas medzi dalsimi ludmi. Ked tak si to pustaj aspon vo virtualke. Aspon moja rada teda.
    24.3.2021 23:16 pupala | skóre: 21
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Vyzerá to tak, že áno. Staršia verzia. 3.2.0 to už nerobí ani na priamej kompilácii v linuxe(čo asi nerobila ani staršia verzia), a ani pri cross kompilácii vo windows na linux-x86_64 target. Ani som netušil o takomto kernel sysctl konfigu. Ale ďakujem všetkým za ochotu.
    25.3.2021 11:21 ajtacka
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Prečo by ma mala zaujímať takáto sračka ako užívateľa? To kde sme. Za chvíľu bude potrebné nejaké ešte väčšie zverstvo...
    25.3.2021 06:56 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Zajímavý problém a hlavně příčina/řešení. Díky všem za poučení.
    25.3.2021 08:22 pupala | skóre: 21
    Rozbalit Rozbalit vše Re: Segmentation fault pri štarte aplikácie normálnym userom
    Teraz to už bolo poučné. Už som si dal do záložiek túto zaujímavú stránku.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.