Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2016-10-01

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:48 ilbot3 joined #divine
01:48 Topic for #divine is now DIVINE: A Parallel LTL Model Checker (http://divine.fi.muni.cz) | http://irclog.perlgeek.de/divine/
07:43 yaqwsx joined #divine
09:37 yaqwsx joined #divine
10:51 yaqwsx joined #divine
11:47 xstill mornfall: jo to já nevím na čem to padalo, nebyl tam backtrace…
11:47 xstill vyamenduju někdy k večeru
11:48 xstill ono tento způsob inicializace mutexu možná ani není správně podle standardu, nevím jestli se agregátový inicializátor může používat v konstrukoru/inicializační sekci
11:48 xstill každopádně mám pocit, že už jsem to řešil, možná na to mám fix ve svém next, podívám se
15:09 yaqwsx joined #divine
16:01 xstill yaqwsx: mohl bys do fault handleru přidat výpis ve kterém vlákně nastala chyba?
16:08 yaqwsx Ok
16:25 yaqwsx Jiná otázka - nechtěli jsme někdy udělat thread-aware __dios_trace?
16:27 xstill chtěli, autotrace je bez toho docela bordel
16:29 yaqwsx Tak bych udělal jinak - přepíšu DiOS, aby se get_thread_id obešlo bez syscallu, díky čemuž může být __dios_trace thread-aware a tím pádem se vyřeší i problém s fault handlerem.
16:30 xstill za mě OK, ne-syscall thread id pomůže na víc místech
17:04 xstill hm, tak jsem ty future testy opravil, ale běží pekelně dlouho
17:05 yaqwsx Filzofická otázka: Při tracu vypisovat vlákno vždy anebo to přidat další argument, který to povoluje/zakazuje?
17:06 xstill já bych to vypisoval vždycky, podobně jako valgrind vypisuje process id, třeba něco jako thread-id: vypis vlakna
17:06 yaqwsx Ok
17:07 xstill future které jen vrátí konstantu mi tu běží už přes 10 minut… :-/
17:08 yaqwsx Myslím, že v tracu máme chybu...
17:08 xstill kde?
17:08 yaqwsx vsnprintf( buffer + fmtIndent, 1024, fmt, ap ) - tohle může při nenulovém indentu přetéct
17:09 xstill jo, to může
17:13 evenfall az to pretece, divine ti rekne
17:14 yaqwsx A má tedy potom smysl používat snprintf míst sprintf?
17:15 xstill za mě jo, protože třba kdy to volám zfaultu tak nechci aby to zdechlo, raději ať se to zkrátí
17:16 yaqwsx No právě, proto není dle mě ok, že to může přetéct. Nic víc jsem tím nechtěl říci.
17:16 xstill hm, ty 4 hodiny spánku za posledních 36 hodin se nějak projevujou na kvalitě textu
17:16 yaqwsx xstill: Jak jste dopadli?
17:17 xstill bylo to fajn :-), kvík nás porazil, jinak celkově zatím nevím (vyhlašovalo se jen prvních 5, na web jsem se zatím nedíval)
17:19 xstill samozřejmě jsme si otevřeli spoustu nápověd, ale do cíle jsme došli včas a v dobré náladě
17:19 xstill to future je fakt peklo, sežralo mi to 7 GB paměti a pak jsem to musel zabít
17:20 xstill vyamenduju ten test pryč, ty ostatní prochází
17:21 xstill ale s tím by chtělo něco dělat, tvrdit, že umíme C++ a nedat     std::future< int > f = std::async( std::launch::async, [](){ return 8; } );
17:21 xstill assert( f.get() == 8 );
17:21 xstill … to je docela trapný
17:21 xstill i když ona tau počítám trochu pomůže, ale i dřív už byl s těma std threadama problém
17:22 xstill yaqwsx: a měli šifru ve fontáně u janáčkova divadla :-)
17:22 yaqwsx Tak to je hodně cool.
17:23 yaqwsx evenfall: argumenty vm_control jsou 64bit?
17:24 yaqwsx evenfall: Ano, jsou. Chyba nalezena.
17:27 evenfall xstill: to, že ty future jsou velký může být lecčím... a ten initializer je dobře
17:27 evenfall třeba deadlock-partial mi ještě nedávno neskončil ani na arke
17:28 xstill jakej initializer?
17:28 evenfall v tom std::mutex
17:28 xstill aha, tak jo
17:28 evenfall je to C++11, ale to zrovna u std::mutex sotva vadí
17:28 xstill každopádně u sebe mám patche, jen mi ještě běží testy, pak pingnu
17:29 evenfall jo já je včera nebo předevčírem už pouštěl (tak jsem přišel na ten problém s future, nakonec)
17:29 evenfall ale jo, radši počkám :)
17:29 xstill no já jsem hlavně opravil ty initialized v pthreadech takže pouštím testy na všechno
17:32 evenfall jo initializer-y, ok... jsem nechápal než jsem se podíval
17:33 xstill jsem to původně chtěl vyhodit, ale pak jsem zjistil, že se to používá i na detekci dvojí inicializace, což jinak moc nejde
17:33 evenfall xstill: ale to uninit se mi teda moc nelíbí, na to by byla lepší funkce
17:34 xstill jakože funkce která odinicializuje hodnatu na daném ukazateli?
17:34 evenfall prostě jako memset ale ... memunset :)
17:34 xstill :-D
17:34 evenfall v native runtime to jinak bude dost zlobit
17:35 xstill proč?
17:35 evenfall to přepíše tu hodnotu náhodným kusem zásobníku
17:35 evenfall takže to přestane odpovidat tomu co se děje v divinu a rozhasí o protipříklady
17:35 evenfall to*
17:36 xstill to ten memunset bude muset taky, ne? leda bychom ho pro native změnili, nebo měli něco co jen flipne ten flag v shadow a v native se to vyhodí
17:37 evenfall jo, ale memunset víme co znamená a dokážeme se s tím poprat
17:37 xstill hm, když programu dojde paměť kvůli ulimit -v tak umře na floating point exception, to je docela matoucí (teda počítám, že divine jinak na fp exception moc umírat nebude…)
17:37 evenfall mohl by dělit nulou :-)
17:38 evenfall matoucí je taky to, že SIGFPE dostaneš když dělíš nulou celočíselně
17:38 evenfall když dělíš 0.0 tak dostaneš inf
17:38 xstill jako mohl, ale to že mu došla paměť mi příjde skoro pravděpodobnější
17:38 xstill jo to vím, že to dělení nulou je divný
17:38 xstill kde by sis tak ten memunset představoval?
17:39 evenfall no, v diosový libc, asi :P
17:39 evenfall celkově to chce trochu uklidit
17:39 xstill jakože ve string.h?
17:40 xstill hm, spadl mi thrad-basic.cpp
17:40 evenfall tak jsem to nemyslel, ale libc nemusí být nutně jen ten povinnej kus
17:40 evenfall v podstatě každej systém má nějaký rozšíření
17:40 xstill jo takhle
17:41 xstill hm, on totiž padá když může selhat malloc
17:42 xstill yaqwsx: jde už nějak konfigurovat ty faulty z programu?
17:42 xstill teda malloc simfail
17:43 evenfall to je ale divný
17:44 xstill no já to měl u sebe doteď zakomentovaný
17:44 evenfall xstill: a neběží ten future tak dlouho taky proto? ta výjimka je asi teď fakt drahá
17:44 yaqwsx Ano, jde. __dios_configure_fault(_DiOS_SF_malloc, 1, -1)
17:44 xstill evenfall: to je možný
17:44 evenfall xstill: nojo, ale já neměl, pokud ten test byl v tom patchi co tam včera byl tak mi to muselo někdy projít
17:45 xstill divný
17:45 yaqwsx Když se na to dívám, bylo by vhodné zavést konstanty pro enable, disable a keep.
17:45 evenfall :-)
17:45 xstill yaqwsx: jo to bych řekl
17:45 xstill ta -1 je obvlášť nepochopitelná pro mě
17:45 evenfall přičteš jedna, odečteš jedna, výsledek nula ne :P
17:45 yaqwsx ...je u toho komentář :D
17:47 xstill yaqwsx: hm, z toho nechápu co je ten druhý parametr a ten první bych čekal, že má být 0 pokud chci ten fail vypnout
17:49 xstill yaqwsx: jinak ta definice _DiOS_SimFail je trochu divná, čekal bych, že _DiOS_SF_Malloc bude mít normální hodnotu a Last bude mít přidělenou jeho hodnotu, ne naopak
17:50 xstill navíc takhle mám podezření, že ten maloc je 1, což jsi počítám nechtěl
17:51 yaqwsx xstill: Právě jsem upravil dokumentaci k __dios_configure_fault a přidal konstanty. Počkám až mi doběhnout testy a pak všechno zarecorduji.
17:51 evenfall brb, musím vystoupit z vlaku ;)
17:51 yaqwsx xstill: _DiOS_SimFail pokračuje v číselné řadě _DiOS_Fault
17:52 xstill yaqwsx: aha to je jinej last
17:52 xstill to mě zmátlo
17:52 xstill hm, ale last bývá obvykle hodnota toho posledního, ne toho za tím, ne?
17:53 yaqwsx Ale když se na to dívám, chtělo by to upravit, aby to bylo kompatibilní s příkazy, které se zadávají z CLI
17:53 xstill aha, mornfall to v divine.h má taky tak, tak asi ok
17:55 xstill yaqwsx: a má to teda být 0 nebo 1? (chci si to vyzkoušet než to projde do nextu) případně kde máš repo?
17:56 yaqwsx Ad ovládání: první argumenty říká, jestli zapnout/vypnout, druhý argument říká jestli po chybě pokračovat nebo ne. -1 nechává původní hondout, 1 zapíná, 0 výpíná
17:56 yaqwsx Repo: můj home/divine4
17:57 xstill ok, když zakážu malloc fail tak to skončí (v release) za vteřinu :-D
17:58 yaqwsx Anebo pokud chceš, je možné to vypnout z příkazové řádky -o nosimfail:malloc
17:59 xstill hm, to je ale podezřelé, když to vypnu z commandline tak to má 2 stavy
17:59 xstill (z userspace 7026)
17:59 yaqwsx To teda je - o který příklad se jedná?
18:00 xstill ~xstill/DIVINE/divine4/future.cpp
18:00 xstill aha T: Unknow command 'nosimfail' in in parameter 'nosimfail:malloc'
18:01 xstill to by asi ve verify nemělo v klidu skončit
18:01 yaqwsx Jop, protože jsem blbec a je to nofail
18:01 xstill ok teď je to 7025 to už vypadá v pořádku
18:01 yaqwsx xstill: Ve verify by to mělo vyprodukovat chybový stav.
18:02 xstill ne, "no erros found"
18:02 yaqwsx Tak to je špatně. Podívám se na to
18:03 yaqwsx xstill: zvláštní - mělo by to vyprodukovat stav označený pomocí __vm_control( _VM_CA_Bit, _VM_CR_Flags, _VM_CF_Error, _VM_CF_Error );
18:03 xstill mornfall: já teda počkám až přidáš ty yaqwsx pachte na rozumnou konfiguraci (enumy) do nextu a pak ty testy amendnu
18:04 mornfall já je ještě nemam?
18:04 mornfall yaqwsx: jo, ale v __boot to fungovat nebude
18:04 mornfall tam totiž není přechod, celej boot běží před iniciálním stavem
18:04 xstill mornfall: ty nové kde ty hodnoty rozumně pojmenovává
18:04 mornfall a chybové jsou přechody ne stavy
18:05 mornfall No remote patches to pull in!
18:05 xstill aha, tak je asi ještě nedodělal
18:05 mornfall asi je bude muset prvně stvořit :p
18:05 yaqwsx Ještě jsem nerecordoval, chci prvně nechat doběhnout testy
18:05 mornfall jak se teď všichni bojí :-) to je správně
18:06 yaqwsx Buildbota se bojí každý!
18:07 xstill buildbot slouží k automatickému nadávání dokonce i na funcku a automatech :-D
18:07 yaqwsx mornfall: takže to mi ale nepomůže ani si ten stav označkovat až v scheduleru. To musím vyrobit ještě jeden extra stav?
18:08 mornfall yaqwsx: no, já bych to udělal tak, že bych měl extra scheduler kterej jen vyrobí error selfloop na iniciálním stavu
18:08 mornfall to by mělo zabrat, snad
18:08 mornfall i když teď nevim co na to řekne verify
18:09 mornfall jo to by mělo normálně zafungovat
18:10 yaqwsx Eeh, ty testy běží fakt pomalu.
18:34 yaqwsx Filozofická otázka: je lepší mít více syscallů anebo raději jeden, který vrací více informací (např v horní a dolní polovině 32bit slova)?
18:41 xstill o jaký syscall jde?
18:41 yaqwsx Pro konfiguraci faultů.
18:42 yaqwsx Jde mi to, jestli mít syscall pro zjištění toho, jestli uživatel syscall specifikoval nebo ne.
18:42 yaqwsx Je možnost to někam přilepit jako nastavený bit, ale zdá se mi to spíše nešikovné.
18:42 mornfall no, moc často se to volat nebude, takže IMHO vyhrává složitost implementace (teda jednoduchost)
18:43 yaqwsx Takže klidně více syscallů. Ok
18:44 mornfall hm? mně teda přijde jednodušší mít jeden :-)
18:44 yaqwsx Přijde mi ale na obsluhu pohodlnější mít dva.
18:44 mornfall nevim teda jak pokročila automatizace
19:27 yaqwsx Zarecordováno.
20:49 xstill existuje nějakej důvod proč buildy v make závisí na .*-stamp a ne na tom build adresáři? tohle se dost rozbije pokud se změní OBJ
20:55 mornfall moc se mi to nepovedlo zapsat
20:55 mornfall jinak než gnu-only
20:57 xstill nestačí prostě aby to záviselo na $(OBJ)toolchain? (nemám moc ponětí co v makefile je gnu-only, protože jsem nikdy nedělal s jiným než gnu make)
20:57 mornfall $(OBJ)toolchain je adresář
20:58 xstill a na tom nejde záviset? nebo to nedává smysl?
20:58 mornfall jde, ale když zmáčkneš ^C a pustíš znovu make tak už nepozná že to není hotový
20:58 mornfall a celý to vybouchne
20:58 xstill aha
20:59 mornfall prostě jakmile se provede ten mkdir, tak je to pro make hotovo
20:59 xstill tak pak $(OBJ)toolchain/.build-stamp, to by mohlo fungovat a nerozbít se to při změně OBJ
21:00 mornfall jo, tak to bylo předtím, ale gnumake mi nějak nedával substituce s proměnnýma uvnitř
21:00 mornfall pro toolchain to problém není, ale pro všechno ostatní ano
21:01 mornfall teda muselo by se rozkopírovat pravidlo pro configure, protože by nemělo jak poznat co za build to má vlastně vyrobit
21:07 mornfall můžu se na to zítra podívat, teď už se mi do toho hrabat nechce
21:08 mornfall jen je teda otrava to testovat
21:09 mornfall to už by skoro dávalo smysl přepsat to do perlu... :p
21:10 mornfall (v podstatě jediná portable konstrukce v Makefile je ${FOO:x=y} a navíc se chová v různých implementacích různě
21:11 mornfall ... a gnu má spoustu rozšíření ale zrovna tady tahleto funguje dost mizerně)

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary