Portál AbcLinuxu, 30. května 2024 15:54


Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
Člověk z Horní Dolní avatar 4.9.2021 17:57 Člověk z Horní Dolní | blog: blbeczhornidolni
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin
Měli byste tedy jakoby se sanitizérem překompilovat celý runtime.
Ha, teď jsi se prozradil, už vím kdo je Gréta.
Jendа avatar 4.9.2021 18:05 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Gréta avatar 6.9.2021 12:27 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování

jestli jako myslíš že tvuj vodhad je jakoby víc lepšejší než bystroušákovy statistický analízy komentů :D

Člověk z Horní Dolní avatar 6.9.2021 21:55 Člověk z Horní Dolní | blog: blbeczhornidolni
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Zas bych ty prekombinovane statisticke metody neprecenoval, selsky rozum ma casto lepsi vysledky :D
7.9.2021 17:07 _
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Jenda je Bluebear, Greta je Amiga.
xxxs avatar 7.9.2021 17:53 xxxs | skóre: 25 | blog: vetvicky
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
amiga je zaujimavy typek, ale ak sa mu podarilo opravit mozog natolko, aby mohol hrat gretu, tak ten recept bude mat hodnotu gdp eu.
8.9.2021 18:13 Petr
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Greta ma mozog? Vzdyt je uplne vymastena.
Člověk z Horní Dolní avatar 8.9.2021 23:21 Člověk z Horní Dolní | blog: blbeczhornidolni
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
V diskuzi o globalnim oteplovani se docela ztrapnila neznalosti te problematiky.
8.9.2021 23:31 Grétina zapařená pipina
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Považovat odlišný názor za neznalost je dost omezené.
Gréta avatar 10.9.2021 12:17 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování

si myslim že to nemá smysl to s nim dál řešit protože už je jakoby rozhodnutej čemu chce věřit :D ho ale teda jako dorazim když mě takle provokuješ :D :D ;D ;D

7.9.2021 20:59 _
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Gréta je kučera, začalo to jako pravičácká agenda karikatury ekologického liberála, ale dlouho mu to nevydrželo, a už najednou hlásají totožné názory a řeší stejné věci - už nejen politiku, ale najednou i FOSS a licence. Hlavně na sebe nereagují a málokdy jsou ve stejném vlákně. A zejména - koho než frantíka zajímají ty jeho podělaný relační roury? Tohle se blbě mění když si někdo zapomene změnit účet ;-) Q.E.D.
Gréta avatar 10.9.2021 12:19 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování

A zejména - koho než frantíka zajímají ty jeho podělaný relační roury

ttttsssss radar mě zajímá uplně stejně hele :O :O :D :D :D :D ;D ;D

6.9.2021 19:15 Jan Hus
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Gréta nepíše takovou czenglish jako s. Jenda.
4.9.2021 18:57 billgates | skóre: 27
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin
Zaujimave. Doteraz som pouzival -Wall -Wextra -Wshadow -fstack-protector-strong a na sanitizaciu -fsanitize=address -fsanitize=undefined -fsanitize=leak -fno-omit-frame-pointer. Tie niektore dalsie warningove parametre vyzeraju uzitocne.
4.9.2021 19:52 neprogramátor
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin
Když přijde soudný den budou počítače programovat nás, ne my je. A jako první budou na řadě programátoři.
4.9.2021 20:33 Eich
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Nastesti to bude az v dobe kdy bude dominovat vsude JavaScript.
4.9.2021 23:16 plostenka | blog: plstnk
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin
Osobně jsem ale tohle nikdy nepotřeboval řešit, defaultní malloc byl vždycky good enough. Setkali jste se někdy s případem, kdy by bylo potřeba alokátor ladit?
Presne kvuli zpomaleni kvuli (kontrolam na) race condition jsme museli naalokovat velkou pamet pro kazdy thread separatne a implementovat v asm vlastni alokator nad timhle vyhrazenym adresnim prostorem.
Heron avatar 5.9.2021 00:15 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin
Tady je krásný writeup o hledání občasného náhodného pádu Go.
Skvělý článek, díky.

Trochu mi to (v malém) připomíná moje začátky s golangem, kdy jsem skoro hned narazil na chybu při procházení adresářů na sambě, kdy to vracelo různý počet nalezených souborů při každém dalším volání. Golang všechny relevantní syscally posílá s SA_RESTART a nikdy by se neměl vracet EINTR. Jenže se vrací. Ovladač pro sambu prostě ignoruje SA_RESTART a nechá to udělat klienta (potom se zjistilo, že je to ještě navíc ovlivněno velikostí bufferu) a nakonec vydali nové verze knihovních funkcí, ale toto řešení se mi nelíbí, protože to zakrývá původní a stále existujicí chybu v sambě. (Nehledě na to, že workaround je poměrně snadný a podle mě je mnohem lepší v kódu když už tak použít workaround na místo knihovní funkce, která zakrývá nějaký problém na systémové vrstvě. -- Potom se každý drží knihovní funkce a nechce nic slyšet o tom, že pod tím je to ale stále špatně, takže je lepší toto místo explicitně označit.) Sice na kritických místech používám NFS, kde se to neděje, ale i tak mě překvapuje, že takto často používaný způsob sdílení má tyto problémy.
Heron
Heron avatar 5.9.2021 00:19 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin
Například se mi zdá, že si každý druhý píše vlastní alokátor
Jo, bavil jsem se s člověkem, který si běžně píše (C++) několik vlastních alokátorů v jednom programu pro různé účely, protože jinak to nejde a ten single thread program by jinak nezvládal zátěž (což je možná pravda, ale současně to extrémně zkomplikuje přepis na multithread nebo jiné rozsekání).
Heron
5.9.2021 15:55 jbv
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Obecne je problem v tom ze vetsina C/C++ progrmatoru jsou hodne spatni. Nejcasteji jsou to samouci, hlavne z 90tek. Dneska uz nastesti C/C++ neni sexy, tak z mladsi generace v nem programuji prkticky jen ti, ktere to opravdu zajima. Je to pekne videt i na nazoru hlavne C komunity na rust, protoze tihle programatori nejsou schopni napsat netrivialni rust kod, co se zkompiluje.
Člověk z Horní Dolní avatar 6.9.2021 22:35 Člověk z Horní Dolní | blog: blbeczhornidolni
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Jde taky o to, ze C++ je extremne slozity jazyk. Ja jsem driv C++ nesnasel, ale v poslednich asi 5 letech jsem si ho docela oblibil, i kdyz moc v nem nedelam, urcite nejsem zadny odbornik. Od C++11 ten jazyk udelal obrovsky pokrok v UX, s nadsazkou to je ted jako Python, ale rychlejsi. Tu rychlost a moznost low-level optimalizace miluju, je to takovy pocit svobody, ze me ten jazyk nijak neomezuje.
5.9.2021 02:54 kvr
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin
Pěkný článek. Ještě bych zmínil Electric Fence Malloc, který před nebo za alokovanou pamětí rezervoval nepřístupnou stránku, která při buffer overflow/underflow vedla k okamžitému pádu.
a pokud vlákna hodně alokují, tak je toto bottleneck. Alokátor tohle detekuje a rozdělí haldu na více částí, pro každé vlákno samostatně.

Osobně jsem ale tohle nikdy nepotřeboval řešit, defaultní malloc byl vždycky good enough. Setkali jste se někdy s případem, kdy by bylo potřeba alokátor ladit?
Kdysi dávno, tak před 15ti lety. Defakto webserver v C++, samozřejmě spousta requestů se zpracovávala paralelně a v té chvíli byl i na tehdy snad jenom čtyřjádru existující glibc malloc šílený bottleneck. Takže v té době jsem si i já napsal vlastní alokátor, kromě per-thread cache a rozdělení podle podobné velikosti bloků uměl i některé debug features popsané v článku, včetně detekce memory leaks, myslím, že i inaccessible stránky na začátku či na konci apod. Později s běžně dostupnými multicore procesory a multithreading se začaly používat podobné alokátory přes LD_PRELOAD a mám pocit, že i glibc má dnes něco podobného (nebo dokonce přímo převzali jemalloc?)...

Tady je ukázka, že podmínku zarovnaného přístupu není možné v C ignorovat ani na architekturách, kde to procesor hardwarově ošetří (byť za cenu zpomalení), protože se to stejně náhodně vysype.
Na tohle jsem taky narazil, když jsem experimentoval s AVX-512. Alignment __mm512 sice funguje v rámci struktury, ale stack je zarovnaný jenom 16-bytes. Takže SSE v pohodě jede (__mm128), ale AVX-2 a AVX-512 může mít základní adresu struktury nezarovnanou a tedy i prvky uvnitř. Nejsem si jistý, jak to má malloc bez options, myslím, že taky musí vracet 16-byte, ale jestli i výš, nevím.

Jinak, procesor x86_64 to právě hardwarově neošetří - na load/store se můžou použít instrukce, které vyžadují alignment (MOVAPD apod), pokud to kompilátor (mylně, viz výše) ví a to potom vede k pádům. Měly být původně rychlejší, ale myslím, že dneska je to skoro jedno...

Kromě toho bych řekl, že instrukce na unaligned load/store nebudou atomické (ne ve smyslu compare-and-swap, ale v jednoduchém smyslu konzistence, že se přepíše či nahraje celá hodnota najednou bez přerušení jiným CPU).
5.9.2021 16:08 jbv
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Vlastni akolator neni uplne casta vec, ale da se pro nej najit pomerne dost use casu. Obecne bych rekl, ze vsechny pouziti, kde je velky tlak na rychlost alokace/dealokace a zaroven je pomerne predvidatelne pouziti alokatoru. Typicky priklad jsou gc, transakce, databaze apod. Ale je pravda, ze to nejsou veci co lidi pisou denne.
xkucf03 avatar 5.9.2021 16:11 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Typicky priklad jsou gc
Existuje něco jiného než Boehm? Myslím veřejně dostupné.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
xkucf03 avatar 5.9.2021 09:23 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin

Pěkný článek, díky.

Nejvíc používám ASan. Bez něj by programování v C/C++ byla procházka minovým polem. S ním je to relativně v pohodě a řeší velkou část nebezpečnosti těchto jazyků.

Ještě bych doporučil použití fuzzeru, který taky může odhalit nějaké ty chyby – krmí program náhodnými/chybnými daty a zjišťuje, zda program spadne, zacyklí se atd. Může odhalit např. chybu typu, že ve vstupních datech je uvedena délka následujícího pole (TLV), parser si pro tuto délku alokuje paměť, aniž by předem ověřil, že tolik dat na vstupu vůbec je (tzn. chybnými vstupními daty lze program donutit, aby si alokoval zbytečně gigabajty paměti a nebo spadl). Ale zrovna tohle je chyba, které jsem si byl vědom a fuzzerem jsem si ji jen potvrdil.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
5.9.2021 10:04 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin
například přetečení intu, ale to lidi často řeší kompilací s -fwrapv
Pěkné, využil jsem. Ušetřilo mi to v programu asi tak 4 instrukce. :-)
Quando omni flunkus moritati
5.9.2021 12:27 mln
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin
Ma niekto tip na sanitiser (alebo podobne nastroje na buffer owerflow, memory leak, pretecenie premennych) ktory by fungoval na mikrokntroleroch ? SMT32, MSP430, TMS320 atd ? Na mikrokontroleroch sa C jazyku clovek nevyhne :/

Chcel by som sa dožiť dna ked bude C jazyk mat v kompilatore volbu ktora zapne kontroly na owerflow, memory leak, pretecenie premennych. Mikrokontrolery su uz dosť rychle, podme písať bezpečný program - tí ktorí o to maju zaujem (nikomu nevnucujem).
xkucf03 avatar 5.9.2021 14:15 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování

Nestačilo by ten kritický kód napsat jako knihovnu, kterou by šlo přeložit jak pro MCU, tak pro x86? (jasně, tam, kde pracuji s I/O to bude vázané na to MCU a musel bych si to nějak mockovat/simulovat, ale svoje vlastní algoritmy můžu klidně napsat jako .h soubor, který bude použitelný jako uvnitř firmwaru tak na desktopu).

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
5.9.2021 23:06 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin
Nezarovnaný přístup - problémy i na x86 Tady je ukázka, že podmínku zarovnaného přístupu není možné v C ignorovat ani na architekturách, kde to procesor hardwarově ošetří (byť za cenu zpomalení), protože se to stejně náhodně vysype.
Někdy ale zarovnaný přístup nechceme, protože nezarovnaný bývá více než 2x rychlejší.
Jendа avatar 6.9.2021 00:27 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
To vypadá jako příklad na omezenou asociativitu cache. Cacheline je 64B (možná na nejnovějších počítačích dokonce 128B), to je úplně něco jiného než o čem se píše v článku (nativní céčkové datové typy - což končí u 8B typů - zarovnané na svoji velikost).
6.9.2021 09:40 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Ano, špatně jsem to přečetl (kolikrát už jsem si říkal, že večer, kdy jsem na pokraji ztráty vědomí vlivem unavenosti, nesmím přispívat do diskuzí).

Alespoň někdo kdo hledá něco o zarovnání, najde i širší pojetí :-)
Gréta avatar 6.9.2021 12:23 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin

supr satanizér :D ;D

oslavná píseň na pana soudruha generalisima prezidentčíka Petra Pavla Pávka 🎶🫡🦚🎶
20.12.2022 02:15 토토사이트
Rozbalit Rozbalit vše Re: Programování v C: sanitizer, profilování
Odpovědět | Sbalit | Link | Blokovat | Admin
The article is really good. I found here looking for a good article because my heart was empty. There are a lot of different articles, so reading them makes me feel a bit empty. Next time I want to read an article about 토토사이트, please

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.