English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés
Σ: 1 post

TCH  (statz) Főfasz
#1, Főfasz (10443)
3542 | #2f1f | ^ | Idézet | Sun, 30 Nov 2014 18:57:40 +01
46.139.*.* Linux x86 Opera Classic Hungary *.catv.pool.telekom.hu
Most húztam le a slozin a GCC-t egyszer s mindenkor! Én ilyet még életemben nem basztam, amit ma ez a hulladék lószar produkált! Most dolgozom egy PNG => IFF konverteren és van nekem egy struct-om, ami így néz ki:
struct png_struct
{
	s32 width;
	s32 height;
	u8 bit_depth;
	u8 color_type;
	u8 compression_method;
	u8 filter_method;
	u8 interlace_method;
	u32 palette[256];
	size_t image_size;
	char *image;
};
És tartozik hozzá egy függvény:
open_png(char *src, png p, bool calc_crc)
Működött is a beolvasás, dekódolás, kitömörítés... Viszont ma eszembe jutott, hogy mi van, ha csak a header-t akarom parse-lni? Módosult a két cucc:
struct png_struct
{
	s32 width;
	s32 height;
	u8 bit_depth;
	u8 color_type;
	u8 compression_method;
	u8 filter_method;
	u8 interlace_method;
	u32 palette[256];
	bool data_loaded;
	size_t image_size;
	char *image;
};
open_png(char *src, png p, bool calc_crc, bool only_parse_header)
Eredmény? Segmentation fault. WTF?! És utána rájöttem, hogy akármit változtatok a struct-on, segfault az eredmény! Kishíján összeszartam magam, hát ilyet még az életben nem pipáltam! Utána kidebuggoltam, hogy a segfaultot ez a sor okozza:
p->image = realloc(p->image, new_size);
Mégpedig azért, mert az image valahogy nem NULL értékkel bírt, holott annál a sornál annak kéne lennie! Elkezdtem kidebuggolni, hogy hol változik meg és végül rájöttem, hogy ennél a sornál:
data = realloc(data, chunk_length + 4);
Előtte NULL a p->image, utána pedig 1024! DAFUQ?! Senki nem nyúl hozzá, se közel, se távol! Mi a fasz?! Mi az eres, retkes faszom ez?! Valami GCC bug?! CLANG fel. Compile. És működik bazdmeg. ÉS MŰKÖDIK BAZDMEG!!! IGEN, EZ EGY KIBASZOTT GCC BUG!!! Hát én ilyet még életemben nem pipáltam, hogy egy realloc egy totál másik pointert szétcsesszen és mindezt egy a kód által nem érintett struct megváltoztatása miatt! 4.6-os és 4.7-es GCC is dettó ugyanezt produkálja, 4.8-at meg nem lehet feltenni Debian 7-re csak úgy, hiába kerestem, mindenütt azt válaszolták a hogy lehet 4.8-at rakni Wheezy-re jellegű kérdésekre, hogy az nem jó ötlet, meg minek neked az. Minek nekem az?! Annak, hogy az előzőek bugosak! (Bár ki tudja, lehet, hogy az utána lévők is!) Nem lehet felrakni?! Ok! Akkor GCC => slozi!
root@Csabi:~# cd /usr/bin
root@Csabi:/usr/bin# unlink gcc
root@Csabi:/usr/bin# unlink g++
root@Csabi:/usr/bin# unlink cpp
root@Csabi:/usr/bin# ln -s clang gcc
root@Csabi:/usr/bin# ln -s clang g++
root@Csabi:/usr/bin# ln -s clang cpp
Good riddance!

Ne használjatok GCC-t, mert SZAR!

Sz*rk: A CLANG-gal bezzeg nincs olyan baj, hogy hogy rakom fel a legújabbat Debian 7-re! http://llvm.org/apt/

Sz*rk #2: Közben egyébként rájöttem, hogy mi okozta (a data változó nem volt NULL), de hogy ez MIÉRT okozta, amit okozott, miért baszik el egy teljesen másik pointert, egy a kód által nem érintett struct-ban és hogy akkor miért ment ez CLANG-ban...
Egyébként -O2 vagy -O3 kapcsolónál a CLANG is elszállt, de az ott és azért szállt el, ahol és amiért elbasztam, nem baszott szét teljesen véletlenszerűen valami egészen mást! Ezért is bírtam rájönni, hogy mi a franc van. Most már megy GCC-ben is, de most már akkor is a CLANG mellett maradok; ha elbaszok valamit, akkor az legyen elbaszva, amit elbasztam és ne totál más!


English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés

Név: (max 255 byte)

Email: (max 255 byte) Nem kötelező!

Üzenet: (max 65536 kar.) 65536-0=65536




crap_vkn v4.34.0 by TCH
Thx to saxus for the escaped string decoder function (PHP), the realIP function (PHP) & the SQL handle layer (PHP), to thookerov for the int_divide function (PHP), to Jeff Anderson for the getSelText function (JS), to Alex King for the insertAtCursor function (JS), Flood3r for the new CSS styles, Pety for the spamprotection idea and some design and comfort ideas, MaxMind for the IP2Country database, famfamfam for the flags of countries and an unknown PHP programmer for the removeAccents function.



Kecskebaszók ide!