Portál AbcLinuxu, 11. května 2024 04:49


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

Vložit další komentář
kozzi avatar 20.4.2008 12:25 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Odpovědět | Sbalit | Link | Blokovat | Admin
No z popisu bych to spíš vyděl na BUG v GCC, ale ještě se na to kouknu blíže.
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
stativ avatar 20.4.2008 12:42 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Díky, tím by jsi mi moc pomohl.

Nejde kvůli tomu připojení na verse z Blenderu, které se sice dá nevím proč obejít zapnutím debug buildu (což kazí veškeré snahy o debugování), ale pak je Blender pomalý. U jiných klientů (třeba verse gimp), kteří se nelinkují s vlastní verzí verse to jde obejít tím, že verze zkompiluji bez optimalizací a nastavím ho system-wide.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
kozzi avatar 20.4.2008 12:47 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Jo a jakýho klienta zkoušíš, verse neznám takže nevím, co přesně mám spsutit z toho verse-test
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
stativ avatar 20.4.2008 13:00 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
To je jedno, nefunguje pak žádný. Já bežně používám render, protože na tom je to pěkně vidět, viz. další poznámky.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
kozzi avatar 20.4.2008 13:02 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Odpovědět | Sbalit | Link | Blokovat | Admin
Je to zvláštní pokud použiju k sestaveni scons tak to jede ok, ale pokud spustim standartne make tak to nejede. Nechapu proc, jelikoz scons by vlastne mel jen vygenerovat Makefile alspon myslim. V obou pripadech jsem pouzil -O2
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
kozzi avatar 20.4.2008 13:05 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Aha tak scons nejak zahadne ten parametr -O2 vynechava tak jako vsechny dalsi.
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
stativ avatar 20.4.2008 13:18 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
scons je, pokud vím, případ sám pro sebe. Je to samostatný build systém, který Makefile negeneruje (narozdíl třeba od cmake a podobných), a rovnou spouští gcc s potřebnými flagy. Prakticky vůbec ho nechápu, jelikož python je pro mě španěská vesnice.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
20.4.2008 13:25 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak to vyzerá, že sa to zasekne v tej funkcii
miller_rabin
. Môj odhad je, že
k = v_bignum_bit_msb(nmo);
vráti záporné číslo a potom sa to v nasledujúcom fore cyklí. Navrhujem podávať na každý riadok printf a potom sa uvidí.
stativ avatar 20.4.2008 13:55 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
To právě že ne, právě jsem to zkusil a k je 255. Už předtím jsem pomocí gdb zkoušel step a zjistil jsem, že se neustále volá právě funkce miller_rabin().
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
20.4.2008 14:04 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
No dobre. Bola to len prvá vec čo ma napadla. Práve som dal emerge gcc, takže za takú hodinku to vyskúšam:-D.
20.4.2008 21:37 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
No podľa mňa je problém v tom, že tá miller_rabin() funkcia volaná z v_prime_test() vracia vždy 0. Ale zistiť prečo asi bude nad moje sily.
stativ avatar 20.4.2008 14:22 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Odpovědět | Sbalit | Link | Blokovat | Admin
Na něco jsem narazil, odpovídalo by to i tomu strace blenderu v odkazovaném bugreportu.

Problém nastává nejspíš už v v_randgen.c ve funkci VRandGen * v_randgen_new(void). Měl by se tam otevřít /dev/urandom, ale nic to nedělá. Když dám za gen->fd = open(SOURCE, O_RDONLY); nějaký printf, tak ho to ani nevypíše ale až po delší době to přeskočí do fce v_randgen_get() v témže souboru.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
stativ avatar 20.4.2008 14:45 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Dokonce pokud vymažete host_id.rsa tak se zacyklí i server což zjednodušuje práci.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
stativ avatar 20.4.2008 15:21 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Možná už to začínám chápat.

V souboru v_randgen.c fce VRandGen * v_randgen_new(void) otevře deskriptor na /dev/urandom a ten vrátí – to ještě funguje tak jak má.

Pak v souboru v_bignum.c funkce void v_bignum_set_random(VBigDig *x, VRandGen *gen) zavolá fci void v_randgen_get(VRandGen *gen, void *bytes, size_t num) z v_randgen.c. Tahle funkce vezme deskriptor na /dev/urandom a ten se pokusí přečíst. Pomocí ukazatale by se měly přečtená data vrátit volané funkci. A tady je průser: /dev/urandom se začne číst, ale už neskončí.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
stativ avatar 20.4.2008 15:43 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Tak ne, sice to tak vypadá, ale jde jenom o jeho neustálé volání. Takže je to jako původně.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
20.4.2008 19:08 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak som si to spustil a zistil som, že sa to zacyklí v súbore v_randgen.c, ako už bolo spomínané vyššie. Stále sa opakuje while cyklus s hodnotami *x=16 a gen->fd=8.
void v_prime_set_random(VBigDig *x)
{
	int		bits = v_bignum_bit_size(x);
	VRandGen	*gen;

	gen = v_randgen_new();
	do
	{
		/* Create candidate, making sure it's both odd and non-zero. */
		v_bignum_set_random(x, gen);
		/* Set topmost two bits, makes sure products are big. */
		v_bignum_bit_set(x, bits - 1);
		v_bignum_bit_set(x, bits - 2);
		/* Set lowermost bit, makes sure it is odd (better prime candidate that way). */
		v_bignum_bit_set(x, 0);
	} while(!v_prime_test(x, gen)); 
/*	printf("Prime found after %d iterations: ", count);
	v_bignum_print_hex_lf(x);
*/
	v_randgen_destroy(gen);
}
20.4.2008 22:01 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Odpovědět | Sbalit | Link | Blokovat | Admin
Práve som to vyskúšal s gcc-4.1.2 a rovnaký problém.

Tip na debugovanie: na výpis premennej typu VBigDig je možné použiť funkciu v_bignum_print_hex_lf(x)
stativ avatar 21.4.2008 08:39 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Bezva, tohle mi (nejspíš) hodně pomůže. Jinak hodnotu x jsem totiž nějak doposud nedokázal dostat. Leda že by byla pokaždé 16 ;-). Ještě vymyslet jak získat obsah gen, ale to asi nebude třeba, podle zběžného kouknutí na kód to vypadá, že ukládá jenom deskriptor na /dev/urandom.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
stativ avatar 21.4.2008 09:06 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Odpovědět | Sbalit | Link | Blokovat | Admin
Takže to vypadá na případ, že v_prime_test() nepozná, že jde o prvočíslo.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
21.4.2008 15:39 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Áno je to tak. Vytvoril som si náhodný súbor dd if=/dev/urandom of=../verse-tests/rand count=1000 bs=32. Potom som prepísal 64. riadok v_randgen.c na #define SOURCE "rand". Touto úpravou mi začal program po každom spustení generovať tú istú sekvenciu čísel, takže sa dá pekne porovnať dobrý a zlý výstup.

Dobrý program označil 0xC4FD1FB7720D4DF2C15DBD9A0FF4C9454399401720757DAB7DDBD68F909D3BC1 ako prvočíslo. Zlý si myslí, že 0xC4FD1FB7720D4DF2C15DBD9A0FF4C9454399401720757DAB7DDBD68F909D3BC1 nie je prvočíslo a pokračuje drzo ďalej.
stativ avatar 21.4.2008 17:59 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Já to zase zkoušel tak, že jsem před otestováním pomocí v_bignum_set_string_hex(), popř. pomocí v_bignum_set_string() x nastavil na nějaké zaručené prvočíslo (některá jsou v v_prime_set_table(), ale zkoušel jsem i jiná).
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
21.4.2008 21:11 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Tak ďalší pokrok: v_bignum_reduce(d, n, mu); pri druhom prechode for cyklom vracia nesprávny výsledok.
21.4.2008 21:52 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Ešte jeden update: chyba je vo funkcii v_bignum_bit_shift_right() volanej z v_bignum_reduce()
21.4.2008 22:07 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Nie v_bignum_bit_shift_right() ale v_bignum_mul(), nejak som to splietol;-)
22.4.2008 00:58 Jirka P
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Můžu hádat? hází to ty cifry o 1 větší (tedy 0x10001 * 0x10001 -> 0x200030002 místo 0x100020001)?
stativ avatar 22.4.2008 11:34 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Já došel k jinému výsledku – že problém je v druhém průběhu smyčkou v miller_rabin() ve funkci v_bignum_square_half(d);
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
stativ avatar 22.4.2008 10:44 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Nějak se mi toho nedaří dosáhnout. Pokaždé mi to vygeneruje jinou hodnotu druhého parametru.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
stativ avatar 22.4.2008 10:49 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Už nic, našel jsem to.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
22.4.2008 22:14 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Odpovědět | Sbalit | Link | Blokovat | Admin
Příloha:
Tak som dal tie inkriminované funkcie do testovacieho zdrojáku (v prílohe) a nejako sa mi stále nedarí zreprodukovať tú chybu.
stativ avatar 23.4.2008 10:55 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Příloha:
Mně jo, viz příloha.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
23.4.2008 11:38 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Skvelé! Vyzerá to tak, že sa treba asi presne trafiť do dĺžky toho čísla. Ja som experimentoval s rôznymi hodnotami aj s rôznym počtom úvodných núl a stále nič.
stativ avatar 23.4.2008 13:32 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Řekl bych, že délka je dána pocí BITS (která je 512, původně definována je v v_encryption.h jako V_ENCRYPTION_LOGIN_KEY_BITS).
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
23.4.2008 12:20 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Příloha:
Tak som odkomentoval zopár zakomentovaných printf() vo funkcii v_bignum_square_half() a tu je výsledok.

Prvá kompilácia: ./a.out > out1

Druhá kompilácia: ./a.out > out2

diff -u out1 out2 > priloha.diff

23.4.2008 12:58 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
high = (uv & 0x80000000) != 0; je vždy 0. Predpokladám, že to bude chyba kompilátora.
stativ avatar 23.4.2008 13:34 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Díky moc! Před chvílí jsem odeslal bug report do gcc bugzilly (#36026). Tohle tam doplním.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
stativ avatar 23.4.2008 17:26 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak na tohle nejde říct nic jiného než: „Wow!“
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
23.4.2008 17:34 Ketling | skóre: 8
Rozbalit Rozbalit vše Re: Pojďte na lov: GCC 4.3.0 vs. verse
Tak to by ma nikdy nenapadlo. Škoda, že kompilátor nevyhodí ten warning pri -Wall alebo aspoň -Wextra.

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.