V Berlíně probíhá konference vývojářů a uživatelů desktopového prostředí KDE Plasma Akademy 2025. Při té příležitosti byla oznámena alfa verze nové linuxové distribuce KDE Linux.
Byl vydán Debian 13.1, tj. první opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.12, tj. dvanáctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
Evropská komise potrestala Google ze skupiny Alphabet pokutou 2,95 miliardy eur (71,9 miliardy Kč) za porušení antimonopolní legislativy. Podle EK, která mimo jiné plní funkci antimonopolního orgánu EU, se Google dopustil protisoutěžních praktik ve svém reklamním byznysu. Google v reakci uvedl, že rozhodnutí považuje za chybné a hodlá se proti němu odvolat. EK ve věci rozhodovala na základě stížnosti Evropské rady vydavatelů. Podle
… více »Podpora 32bitového Firefoxu pro Linux skončí v roce 2026. Poslední podporované 32bitové verze budou Firefox 144 a Firefox 140 s rozšířenou podporou, jehož podpora skončí v září 2026.
Společnost Raspberry Pi nově nabízí Raspberry Pi SSD s kapacitou 1 TB za 70 dolarů.
Microsoft BASIC pro mikroprocesor 6502 byl uvolněn jako open source. Zdrojový kód je k dispozici na GitHubu.
Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) se připojil k dokumentu „A Shared Vision of Software Bill of Materials (SBOM) for Cybersecurity“, který vydala americká Agentura pro kybernetickou a infrastrukturní bezpečnost (CISA) s Národní bezpečnostní agenturou (NSA), spolu s dalšími mezinárodními partnery. Dokument vznikl v rámci globálního expertního fóra pro SBOM, které má za cíl motivovat k širšímu využívání … více »
Švýcarská AI centra EPFL, ETH Zurich a CSCS představila otevřený vícejazyčný velký jazykový model (LLM) s názvem Apertus. Vyzkoušet lze na stránce Public AI Inference Utility.
Byl vydán Linux Mint 22.2 s kódovým jménem Zara. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze novou XApp aplikaci Fingwit pro autentizaci pomocí otisků prstů nebo vlastní fork knihovny libAdwaita s názvem libAdapta podporující grafická témata. Linux Mint 22.2 bude podporován do roku 2029.
Čínská společnost Tencent uvolnila svůj AI model HunyuanWorld-Voyager pro generování videí 3D světů z jednoho obrázku a určené trajektorie kamery. Licence ale nedovoluje jeho používání na území Evropské unie, Spojeného království a Jižní Koreje.
#0 _dl_lookup_symbol_x (undef_name=0x30bde3 "using_xterm", undef_map=0x862e0a0, ref=0xbffef550, symbol_scope=0x862e258, version=0x0, type_class=1, flags=1, skip_map=0x0) at dl-lookup.c:713 #1 0x00110c98 in _dl_fixup (l=<value optimized out>, reloc_arg=<value optimized out>) at dl-runtime.c:118 #2 0x001174f0 in _dl_runtime_resolve () at ../sysdeps/i386/dl-trampoline.S:37 #3 0x0030e1eb in terminal_initialize () at terminal.c:404 #4 0x080e5297 in iodev_init () at dev_list.c:107 #5 0x0805e335 in main (argc=1, argv=0xbffff764) at emu.c:426Nevíte někdo co s tím? Těm bodům #3 - #0 nerozumím, předpokládám, že jsou to nějaké rutiny glibc, ale netuším o co tam přesně jde a po čem bych měl jít. Příp. zná někdo odkazy na nějakou slušnou nalejvárnu z téhle oblasti?
terminal.c
?
403 404 if (using_xterm()) 405 Video_term.change_config = term_change_config;Ta funkce "using_xterm()" je definována ve stejném zdrojáku o kousek výše takhle:
305 306 int using_xterm(void) 307 { 308 char *term = getenv("TERM"); 309 310 if (term == NULL) 311 return 0; 312 313 return !strncmp("xterm", term, 5) || 314 !strncmp("rxvt", term, 4) || 315 !strcmp("dtterm", term); 316 } 317Na tom nic špatného taky nevidím, a ten backtrace do toho IMO neukazuje. V položené otázce mám chybu, nerozumím bodům #2 - #0, ten #3 je ještě jasný. Ale zbytek? Ještě pro upřesnění - na Fedoře 12-13/i386 mi stejný program ze stejných zdrojáků sestavený se stejnými volbami chodí dobře, na několika počítačích.
nm terminal.o |grep using_xterm
?
b) môžeš to pustiť pod valgrind-om?
using_xterm()
linkuje z dynamické knihovny a právě při tom nastává problém, ne až při jejím spuštění.
USE_DL_PLUGINS=1 # Hlavni Makefile.conf CFILES=term_core.c terminal.c keyb_slang.c mouse_xterm.c OBJS=$(CFILES:.c=.o) ifdef USE_DL_PLUGINS $(BINPATH)/bin/libplugin_term.so: $(OBJS) $(MAPS) $(CC) $(LDFLAGS) -shared -o $@ $(OBJS) $(SLANGLIB) $(AR) crs $(LIB) endifa binární části jsou zhruba:
/usr/bin/xdosemu.bin /usr/lib/dosemu /usr/lib/dosemu/libplugin_X.so /usr/lib/dosemu/libplugin_alsa.so /usr/lib/dosemu/libplugin_gpm.so /usr/lib/dosemu/libplugin_sdl.so /usr/lib/dosemu/libplugin_sndfile.so /usr/lib/dosemu/libplugin_term.soAle co s tím? Jak postupovat dál?
Program received signal SIGSEGV, Segmentation fault. _dl_lookup_symbol_x (undef_name=0x804abb3 "setreuid", undef_map=0x123900, ref=0xbffef4d0, symbol_scope=0x123ab8, version=0xb7fe5438, type_class=1, flags=1, skip_map=0x0) at dl-lookup.c:713 713 { (gdb) bt #0 _dl_lookup_symbol_x (undef_name=0x804abb3 "setreuid", undef_map=0x123900, ref=0xbffef4d0, symbol_scope=0x123ab8, version=0xb7fe5438, type_class=1, flags=1, skip_map=0x0) at dl-lookup.c:713 #1 0x00110c98 in _dl_fixup (l=<value optimized out>, reloc_arg=<value optimized out>) at dl-runtime.c:118 #2 0x001174f0 in _dl_runtime_resolve () at ../sysdeps/i386/dl-trampoline.S:37 #3 0x080886f7 in priv_drop () at priv.c:187 #4 0x0804e616 in main (argc=4, argv=0xbffff5f4) at emu.c:404Není mi jasné, co se tam může dít. "priv.c" na řádku 187 volá "setreuid" s parametry (500,500), to by mělo být OK a moc by se na tom dát zkazit nemělo. Jak by se mělo postupovat dál?
LD_BIND_NOW=y ./nazev_binarky
To by mělo způsobit, že se všechny symboly pokusí dynamic linker vyřešit všechny závislosti ještě před začátkem programu. Né, že by to potom začalo fungovat, ale bude jasné, že za to "může" dynamic linker.
(gdb) help awatch
Set a watchpoint for an expression.
A watchpoint stops execution of your program whenever the value of
an expression is either read or written.
Valgrind je vynikajúci nástroj. Vyskúšaj.
==6935== HEAP SUMMARY: ==6935== in use at exit: 38,675 bytes in 49 blocks ==6935== total heap usage: 1,818 allocs, 1,769 frees, 194,819 bytes allocated ==6935== ==6935== LEAK SUMMARY: ==6935== definitely lost: 0 bytes in 0 blocks ==6935== indirectly lost: 0 bytes in 0 blocks ==6935== possibly lost: 0 bytes in 0 blocks ==6935== still reachable: 38,675 bytes in 49 blocks ==6935== suppressed: 0 bytes in 0 blocks ==6935== Reachable blocks (those to which a pointer was found) are not shown. ==6935== To see them, rerun with: --leak-check=full --show-reachable=yes ==6935== ==6935== For counts of detected and suppressed errors, rerun with: -v ==6935== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 18 from 8) ==6935== ==6935== HEAP SUMMARY: ==6935== in use at exit: 423,807 bytes in 508 blocks ==6935== total heap usage: 4,166 allocs, 3,658 frees, 11,417,093 bytes allocated ==6935== ==6935== 12 bytes in 1 blocks are definitely lost in loss record 34 of 131 ==6935== at 0x400677E: malloc (vg_replace_malloc.c:195) ==6935== by 0xDF9353: XcursorTryShapeCursor (in /usr/lib/libXcursor.so.1.0.2) ==6935== by 0x4475CAC: XCreateGlyphCursor (in /usr/lib/libX11.so.6.3.0) ==6935== by 0x4011A89: X_init (X.c:2426) ==6935== by 0x80E5296: iodev_init (in /usr/bin/dosemu.bin) ==6935== by 0x805E334: main (in /usr/bin/dosemu.bin) ==6935== ==6935== 124 bytes in 1 blocks are definitely lost in loss record 90 of 131 ==6935== at 0x400677E: malloc (vg_replace_malloc.c:195) ==6935== by 0xB98D83: ??? (in /usr/lib/libxcb.so.1.1.0) ==6935== by 0xB98E3A: ??? (in /usr/lib/libxcb.so.1.1.0) ==6935== by 0xB986F9: xcb_connect_to_display_with_auth_info (in /usr/lib/libxcb.so.1.1.0) ==6935== by 0xB98A2C: xcb_connect (in /usr/lib/libxcb.so.1.1.0) ==6935== by 0x44A0302: _XConnectXCB (in /usr/lib/libX11.so.6.3.0) ==6935== by 0x4487F62: XOpenDisplay (in /usr/lib/libX11.so.6.3.0) ==6935== by 0x4011203: X_init (X.c:510) ==6935== by 0x80E5296: iodev_init (in /usr/bin/dosemu.bin) ==6935== by 0x805E334: main (in /usr/bin/dosemu.bin) ==6935== ==6935== 124 bytes in 1 blocks are definitely lost in loss record 91 of 131 ==6935== at 0x400677E: malloc (vg_replace_malloc.c:195) ==6935== by 0xB98D83: ??? (in /usr/lib/libxcb.so.1.1.0) ==6935== by 0xB98E3A: ??? (in /usr/lib/libxcb.so.1.1.0) ==6935== by 0xB986F9: xcb_connect_to_display_with_auth_info (in /usr/lib/libxcb.so.1.1.0) ==6935== by 0xB98A2C: xcb_connect (in /usr/lib/libxcb.so.1.1.0) ==6935== by 0x44A0302: _XConnectXCB (in /usr/lib/libX11.so.6.3.0) ==6935== by 0x4487F62: XOpenDisplay (in /usr/lib/libX11.so.6.3.0) ==6935== by 0x4015895: X11_DetectLayout (X_keymaps.c:73) ==6935== by 0x813127E: setup_default_keytable (in /usr/bin/dosemu.bin) ==6935== by 0x812F63B: keyb_server_init (in /usr/bin/dosemu.bin) ==6935== by 0x81326BA: keyb_init (in /usr/bin/dosemu.bin) ==6935== by 0x80E5296: iodev_init (in /usr/bin/dosemu.bin) ==6935== ==6935== 2,000 (80 direct, 1,920 indirect) bytes in 1 blocks are definitely lost in loss record 120 of 131 ==6935== at 0x400677E: malloc (vg_replace_malloc.c:195) ==6935== by 0x4479193: ??? (in /usr/lib/libX11.so.6.3.0) ==6935== by 0x4479C97: XQueryFont (in /usr/lib/libX11.so.6.3.0) ==6935== by 0xDF92D8: XcursorTryShapeCursor (in /usr/lib/libXcursor.so.1.0.2) ==6935== by 0x4475CAC: XCreateGlyphCursor (in /usr/lib/libX11.so.6.3.0) ==6935== by 0x4011A89: X_init (X.c:2426) ==6935== by 0x80E5296: iodev_init (in /usr/bin/dosemu.bin) ==6935== by 0x805E334: main (in /usr/bin/dosemu.bin) ==6935== ==6935== LEAK SUMMARY: ==6935== definitely lost: 340 bytes in 4 blocks ==6935== indirectly lost: 1,920 bytes in 2 blocks ==6935== possibly lost: 0 bytes in 0 blocks ==6935== still reachable: 421,547 bytes in 502 blocks ==6935== suppressed: 0 bytes in 0 blocks ==6935== Reachable blocks (those to which a pointer was found) are not shown. ==6935== To see them, rerun with: --leak-check=full --show-reachable=yes ==6935== ==6935== For counts of detected and suppressed errors, rerun with: -v ==6935== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 29 from 10)Na PC kde hází SEGV se to chová jinak: do logu se zapíše cca 10kB, zdá se shodných jako na OK PC. A pak zřejmě někde cyklí, valgrind (na top-u se zobrazuje memcheck-x86-li(nux)) neustále spotřebovává 95-100% CPU a nic se neděje. Když po několika desítkách minut zkusím breaknout s CTRL/C, skončí to zase na SEGV a valgrin do logu dopíše asi 1600 Byte, tu část od "Process terminating with default action of signal 11":
==10135== ==10135== HEAP SUMMARY: ==10135== in use at exit: 38,675 bytes in 49 blocks ==10135== total heap usage: 1,818 allocs, 1,769 frees, 185,163 bytes allocated ==10135== ==10135== LEAK SUMMARY: ==10135== definitely lost: 0 bytes in 0 blocks ==10135== indirectly lost: 0 bytes in 0 blocks ==10135== possibly lost: 0 bytes in 0 blocks ==10135== still reachable: 38,675 bytes in 49 blocks ==10135== suppressed: 0 bytes in 0 blocks ==10135== Reachable blocks (those to which a pointer was found) are not shown. ==10135== To see them, rerun with: --leak-check=full --show-reachable=yes ==10135== ==10135== For counts of detected and suppressed errors, rerun with: -v ==10135== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 18 from 8) ==10135== ==10135== Process terminating with default action of signal 11 (SIGSEGV) ==10135== Bad permissions for mapped region at address 0x4001245 ==10135== at 0x10C630: _dl_lookup_symbol_x (dl-lookup.c:713) ==10135== by 0x1174EF: _dl_runtime_resolve (dl-trampoline.S:37) ==10135== by 0x1FE457: mmap (mmap.S:62) ==10135== by 0x808E635: remove_from_io_select (dosemu_debug.h:188) ==10135== by 0x808DAB9: ??? (mapfile.c:208) ==10135== by 0x80E4FB9: low_mem_init (unistd.h:45) ==10135== by 0x805E2D4: redraw_cursor (text.c:180) ==10135== by 0x13CE15: (below main) (libc-start.c:226) ==10135== ==10135== HEAP SUMMARY: ==10135== in use at exit: 95,850 bytes in 492 blocks ==10135== total heap usage: 1,938 allocs, 1,446 frees, 279,383 bytes allocated ==10135== ==10135== LEAK SUMMARY: ==10135== definitely lost: 0 bytes in 0 blocks ==10135== indirectly lost: 0 bytes in 0 blocks ==10135== possibly lost: 0 bytes in 0 blocks ==10135== still reachable: 95,850 bytes in 492 blocks ==10135== suppressed: 0 bytes in 0 blocks ==10135== Reachable blocks (those to which a pointer was found) are not shown. ==10135== To see them, rerun with: --leak-check=full --show-reachable=yes ==10135== ==10135== For counts of detected and suppressed errors, rerun with: -v ==10135== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 25 from 10)Ten kousek:
==10135== Bad permissions for mapped region at address 0x4001245 ==10135== at 0x10C630: _dl_lookup_symbol_x (dl-lookup.c:713) ==10135== by 0x1174EF: _dl_runtime_resolve (dl-trampoline.S:37) ==10135== by 0x1FE457: mmap (mmap.S:62) ==10135== by 0x808E635: remove_from_io_select (dosemu_debug.h:188) ==10135== by 0x808DAB9: ??? (mapfile.c:208) ==10135== by 0x80E4FB9: low_mem_init (unistd.h:45) ==10135== by 0x805E2D4: redraw_cursor (text.c:180) ==10135== by 0x13CE15: (below main) (libc-start.c:226)je zajímavý, ale jak jej interpretovat?
u zdechlého to snad GDB taky umí, ale nevím jak.Cez
ulimit
povoliť vytváranie "core" súboru (nejak sa stalo zvykom to zakazovať). A potom v gdb povedať, že má použiť ten core súbor.
Franta: pokiaľ si spokojný z riešením od Voty, tak ho označ ako riešenie.
omlouvám se za amatérské dotazy.Nie je na to najmenší dôvod.
pokud nemají stránky default permissions tak se to valgrindu nelíbíZjavne valgrind vie o mprotect()-e pretože ho podľa zoznamu opravených bugov valgrindu "nejak" ošetruje. Ale či mu to vadí, to netuším.
Ale - jak jej mám označit za řešení? Není to funkce povolená jen registrovaným?Aha. To máš pravdu
A pak zřejmě někde cyklí, valgrind (na top-u se zobrazuje memcheck-x86-li(nux)) neustále spotřebovává 95-100% CPU a nic se neděje.To je normálne. Dnes som bežal pod valgrindom program takmer 20 minút, zatiaľ čo bez neho to trvá pod 15 sekúnd. Cieľom je dostať z valgrindu napr. informácie o použití neinicializovaných premenných alebo iné potenciálne zdroje problémov. Tak ako vravel Michal - podľa toho backtrace-u to vyzerá, že sa tá funkcia hľadá v dynamickej knižnici, ale ty si správne interpretoval to "T", že tá funkcia má skutočne implementáciu (teda svoj "text") v terminal.o. Potom ma ešte napadá, že to terminal.o sa nedostane do tej zdieľanej knižnice, alebo že sa dokonca použije úplne iná knižnica. Môžeš to nm skúsiť nechať zbehnúť na príslušnú knižnicu/exe. Alebo môžeš sledovať, ktoré knižnice to vlastne použije - to môže prezradiť
ldd
, alebo (ak sa to dá stihnúť) obsah súboru /proc/{pid}/maps.
$ ldd /usr/bin/dosemu.bin linux-gate.so.1 => (0x005b5000) libvga.so.1 => /usr/lib/libvga.so.1 (0x0034f000) librt.so.1 => /lib/librt.so.1 (0x00343000) libdl.so.2 => /lib/libdl.so.2 (0x002bc000) libm.so.6 => /lib/libm.so.6 (0x002e1000) libslang.so.2 => /usr/lib/libslang.so.2 (0x0077f000) libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x059c6000) libXext.so.6 => /usr/lib/libXext.so.6 (0x00653000) libX11.so.6 => /usr/lib/libX11.so.6 (0x00124000) libgpm.so.2 => /usr/lib/libgpm.so.2 (0x005fa000) libasound.so.2 => /lib/libasound.so.2 (0x06699000) libsndfile.so.1 => /usr/lib/libsndfile.so.1 (0x05b7c000) libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0x0693d000) libpthread.so.0 => /lib/libpthread.so.0 (0x002c3000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00324000) libc.so.6 => /lib/libc.so.6 (0x003f1000) /lib/ld-linux.so.2 (0x00102000) libxcb.so.1 => /usr/lib/libxcb.so.1 (0x0025b000) libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0x068fe000) libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x06786000) libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x0644a000) libogg.so.0 => /usr/lib/libogg.so.0 (0x06442000) libXau.so.6 => /usr/lib/libXau.so.6 (0x005f5000)nic podezřelého na tom taky nevidím. Nemůže to havarovat někde v glibc syscall rutinách? Napadlo mne i zda si třeba přes ten mprotect() nezakáže (třeba blbým parametrem/voláním) přístup k systémovým voláním a pokus o ně pak neskončí takhle, ale nevím jak to ověřit nebo vyloučit.
Napadlo mne i zda si třeba přes ten mprotect() nezakáže (třeba blbým parametrem/voláním)Jestli chcete zjistit, co se děje s mapováními, zkuste si přečíst /proc/$PID/maps a použijte strace na ten program.
Tiskni
Sdílej: