Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2016-10-14

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

All times shown according to UTC.

Time Nick Message
00:09 divine-buildbot Hey! build divine-nightly-release #4 is complete: Success [finished]
00:31 divine-buildbot joined #divine
01:48 ilbot3 joined #divine
01:48 Topic for #divine is now DIVINE | http://divine.fi.muni.cz | http://irclog.perlgeek.de/divine/
02:21 divine-buildbot joined #divine
02:31 divine-buildbot joined #divine
03:01 divine-buildbot joined #divine
03:19 divine-buildbot joined #divine
04:56 xstill hm, co se má stát, pokud by personality vyhodila výjimku?
04:58 xstill jo, protože na pythii10 je nastavená jen na 16 GB
07:08 yaqwsx joined #divine
11:18 yaqwsx joined #divine
11:53 evenfall yaqwsx: pullnul jsem od tebe a jdu zjistit co se to teda rozbilo
11:53 evenfall yaqwsx: kdybys amendoval tak dej vědět
11:54 xstill_ evenfall: bylo by fajn kdyby sim skočil prvním step až na začátek mainu a ne na __boot (alespoň v defaultním módu)
11:54 evenfall xstill_: tohle dělá start
11:54 evenfall xstill_: první step neskáče na __boot ale na _start
11:55 xstill_ no to je jedno, člověk musí proskákat konstruktory, což nechceš když jsi uživatel typicky
11:55 evenfall funguje to stejně jako v gdb
11:55 evenfall prostě start
11:58 xstill_ aha
11:58 xstill_ nečtu manuál
12:01 yaqwsx Ok, ammendovat jsem případně měl v plánu. Ale dneska se k tomu kdyžtak dostanu až večer...
12:36 xstill_ evenfall: jump přes nastavení PC v __vm_control funguje tak, že to nastaví, ale další instrukce to před svým spuštěním inkrementuje, že?
12:37 evenfall xstill_: skáčeš 'před' instrukci (typicky na label)
12:38 evenfall skákat na call jde asi taky (jakoby se vrátil)
12:40 xstill_ jo a když skočím na call (nastavím pc na call) tak to co se stane je, že se nejdrív inkrementuje pc a pak se spustí instrukce, tj. spustí se ta po call-u
12:41 evenfall jo, advance(); dispatch();
12:41 xstill_ ok
12:41 evenfall (doslova, ze zdrojáku)
12:42 xstill_ nojo
12:55 xstill_ mornfall: můžu přidat __dios_mask a __dios_unmask ať nemáme všude to hrozné volání __vm_control?
12:57 evenfall xstill_: je někde krom unwinderu potřeba ne-RAII API?
12:57 evenfall __dios_mask/_unmask jsou hodně nebezpečný funkce
12:58 xstill_ hm, taky pravda
12:58 evenfall tak mi přijde dobrý že vypadaj dost složitě na to aby je nikdo nepoužil
12:58 xstill_ udělám to jinak
12:59 evenfall (možná je problém s tím, že unwinder chce volat trace, ale to je celkově trochu problém)
12:59 evenfall (trace už i tak obsahuje nějaký RAII)
13:00 xstill_ proč by tam měl být problém?
13:01 evenfall sám o sobě ne, ale kdyby trace náhodou někde chtěl vyhodit výjimku, tak to asi nedopadne úplně dobře
13:01 divine-buildbot Hey! build divine-next-debug #14 is complete: Failure [finished]
13:03 evenfall jinak je to vlastně jedno, raii by mělo fungovat nakonec i v tom unwinderu
13:16 evenfall xstill_: jak to vypadá? potřebuju přidat test na dios a nechci úplně vyrábět test/dios když ho taky vyrábíš
13:17 xstill_ evenfall: dej mi tak 15 minut
13:17 yaqwsx joined #divine
13:17 xstill_ pokud to dobře půjde
13:17 evenfall ok
13:24 xstill_ tak jo, našel jsem bug v pthradech při změně InterruptMask
13:24 xstill_ ve wait se volá jen release ale už ne acquire
13:25 yaqwsx Tak až se budou přepisovat, můžeš to rovnou opravit :D
13:25 evenfall yaqwsx: no on ten bug teď už snad nepůjde napsat
13:25 xstill_ jo, už to nejde
13:25 xstill_ takže to opravím…
13:26 xstill_ teď se to totiž napíše jako mask.breakMask( [] { } )
13:26 evenfall nebylo by lepší mask.without()?
13:27 xstill_ to mi zní dost divně teda
13:27 xstill_ možná spíš něco jako mask.unmasked()
13:27 evenfall tak je to inverze k (běžnému) withFoo
13:28 xstill_ mně to příjde divný
13:29 xstill_ unmasked se mi líbí víc
13:31 xstill_ mornfall: ještě jsi nic nepullnul, že?
13:32 evenfall ne
13:34 evenfall unmasked je lepší než breakMask, jen to teda zní jako že to vynutí odmaskování (ale to není pravda)
13:34 xstill_ hm
13:35 xstill_ to je pravda, without mi to teda implikuje taky, i když ne tak silně
13:35 evenfall idea s without je, že to je jako by ten objekt přestal na tu dobu existovat
13:35 xstill_ ok
13:35 evenfall (co se provádí argument)
13:43 xstill_ už jen pouštím testy
13:45 yaqwsx Ad build: Osobně nemám nic proti local.make, ale nestačilo by mít readme, kde bude napsané jak kompilovat?
13:46 evenfall yaqwsx: a to readme si někdo přečte?
13:48 evenfall druhá možnost je aby 'make check' bylo debug-check, 'make' bylo release-all a přidat skript kterej přeloží a spustí debug divine
13:49 evenfall já mam ./autodivine kterej dělá něco jako make debug-divine && $DBG $(make show var=OBJ)debug/tools/divine "$@"
13:49 evenfall plusminus nějaký čachry aby ten make nepsal na stdout
13:50 evenfall a nějaký funkce který pak lze použít jako hodnotu pro DBG (env DBG=gdb ./autodivine, který volá /usr/bin/gdb --args ...)
13:52 evenfall jen nedokážu vymyslet jak se má ten skript jmenovat, tak jsem ho zatím nedal do repa
13:53 evenfall (ono to má vlastně pak i env B=release ./autodivine bla bla, i když to člověk zas tolik neužije)
13:57 yaqwsx evenfall: Nevím jak lidi, ale já si readme projektu, který chci kompilovat/spouštět ze zdrojáků vždy minimálně letmo přečtu
13:57 xstill_ hm, divine mi v testech sežral paměť
13:58 evenfall xstill_: pokud jsi pullnul z next-u, tak za to může yaqwsx ;-)
13:58 evenfall xstill_: debuguju to, ale llvm se z ničeho nic rozhodlo celý přebuildit
13:58 evenfall řekl bych že někde je nějaká bota
14:01 evenfall co třeba ./test/divine? to by aspoň nemátlo nevývojáře
14:05 evenfall (pokud jde o ty padající testy tak yaqwsx totiž rozbil pthread_join)
14:11 divine-buildbot Hey! build divine-next-debug #15 is complete: Failure [finished]
14:16 evenfall jo, to .asint asi fakt nebude fungovat :D
14:17 xstill_ jaké asint?
14:17 xstill_ nepullnul jsem
14:18 evenfall yaqwsx vyrobil union { struct { void *; short }; int asint; }
14:18 xstill_ heh
14:18 xstill_ fakt by to chtělo ten memory limit
14:19 xstill_ všechny testy moi prochzeli, než jsem předělal unwinder
14:19 xstill_ *procházely
14:20 xstill_ future-exits test teď vygeneruje 1832 stavů a pak začne hrozně žrát paměť ale už nic negeneruje
14:21 xstill_ asi cyklí pod maskou počítám
14:21 xstill_ ten patch s testy ale asi pullnut můžeš
14:22 xstill_ akorát neprojdou
14:22 evenfall jo tohle už teď počká, opravuju ty pthready
14:22 xstill_ tak pokud možno nesahej na wait
14:23 xstill_ i když je teda rozbitej…
14:23 evenfall jo ten recordovat nebudu
14:24 xstill_ docela divné je, že ten future-exits v run velmi rychle vyfaultuje, ale v verify dělá nějakej děsnej bordel
14:27 xstill_ hlavně tam teda nevidím nikde nic s výjimkama
14:27 xstill_ ale jsou tam pthready vlastně, třeba jsem je rozbil…
14:35 xstill_ popravdě nechápu jak nám mohli procházet testy
14:35 xstill_ když půlka pthreadů neběžela pod maskou
14:36 xstill_ jop, snažím se v pthreadech čekat, ale jsem pod maskou zvenku, to je docela problém no…
14:40 xstill_ mornfall: dokážu nějak v simu dereferencovat pointer?
14:40 evenfall xstill_: měl by mít atribut @deref
14:41 xstill_ jo, ale @deref už @deref nená ani pokud je to heap pointer…
14:41 evenfall @deref existuje jen pro otypovaný pointry
14:42 xstill_ to dost omezuje co se s tím dá dělat
14:42 xstill_ třeba nejsem schopnej přečíst stav InterruptMask
14:44 evenfall show --raw mask.@deref
14:45 evenfall nicméně je divný že to nemá atributy
14:46 evenfall tam je nějakej problém s tím že to je typedef
14:47 xstill_ hm, větší problém mám koukám v tom, že už před prvním InterruptMask jsem pod maskou
14:47 xstill_ a teď to tam najednou je, myslím že problém je spíš v optimalizovaném bitkódu knihoven
14:47 xstill_ jsem tam přidal trace a najednou to funguje…
14:49 xstill_ trace v simu nepotlačuje __vm_trace, že?
14:49 evenfall trace jako příkaz?
14:49 xstill_ jo
14:49 evenfall to dost možná i jo
14:50 xstill_ jo, vypadá to tak
14:50 xstill_ jo, chtělo by to breakpointy na call/invoke dané funkce
14:50 xstill_ (včetně hypercallů)
14:51 evenfall to se bude hrozně dobře implementovat :-)
14:52 xstill_ jak se implementují breakpointy teď?
14:53 xstill_ je to dost učitečné ale umět zabreakpointovat hypercall
14:53 evenfall no tam není jiná možnost než proiterovat všechny instrukce v celým programu
14:53 xstill_ heh, _start běží pod maskou
14:54 xstill_ aha, to je v pořádku
14:54 xstill_ on to vynuluje
14:54 evenfall pokud teda nechceš psát nějaký složitý filtry na instrukce
14:54 evenfall no, ten filtr by možná zas tak těžkej nebyl
14:54 evenfall jen to bude fungovat pak celý výrazně jinak než gdb
14:55 evenfall ale to by mohlo být spíš dobře než špatně
14:55 evenfall (že by breakpoint nebylo místo v kódu ale predikát na dvojici (pc, instrukce)...)
14:55 evenfall resp. predikát na pc, kterej se může podívat co tam je za instrukci
14:56 xstill_ jo, to by mohlo být fajn
14:56 xstill_ hm, už jsem se doiteroval až k seg
14:56 xstill_ *segv
14:57 xstill_ a teda pokud se někdo pokusí v globálních konstruktorech stvořit vlákno, tak je to instantní smrt když teď běží pod maskou (ne že by to dávalo moc smysl dělat…)
14:57 xstill_ jen mě zmátlou, že pthready někdy běží pod maskou "zvenku"
14:59 xstill_ a zase to v debugu nepadá
14:59 xstill_ achjo
15:03 evenfall bude to asi dost pomalý a netradiční, ale co třeba mít breakpointy (krom lokací) jako regexy na zdrojovej řádek nebo na instrukci?
15:04 xstill_ to zní fajn (+ u call a invoke by bylo dobré i na ten název volané funkce (za runtime vyhodnocené ideálně…))
15:06 xstill_ to je úplně na nic, verify cyklí, ale netuším kde a sim i run normálně skončí a vyhlásí fault
15:06 xstill_ co se stane, když nastane fault pod maskou?
15:06 evenfall no instrukcí jsem myslel to co vypisuje sim když krokuješ
15:06 xstill_ (střílím od boku možné problémy)
15:07 evenfall tzn. včetně všech parametrů (nicméně asi spíš bez výsledku pokud to má zastavit před vyhodnocením té instrukce)
15:07 xstill_ aha, ok, to sice nepokrývá vtable cally, ale ty zas chytíš breakpointem na začátku té funkce, což bude stačit
15:07 evenfall tzn. break -i /@__vm_/ by třeba zastavilo na všech hypercallech
15:08 xstill_ hypercally stejně nejde volat přes pointer
15:08 evenfall (-i protože break /něco/ asi bude lepší nechat na matchování source line)
15:08 xstill_ jj
15:09 xstill_ máš nějaký nápad jak debugovat ten cyklící verify?
15:09 evenfall fault pod maskou to nebude, to normálně funguje
15:10 evenfall ale verify teda nevim, pokud někde pod maskou vznikne cyklus tak z toho nevybruslíš
15:11 evenfall i kdyby se pak našel protipříklad v jiným vlákně jinou cestou, tak to neskončí
15:11 xstill_ to je jediná hypotéza která mě zatím napadá proč by verify mohlo alokovat ale negenerovat stavy
15:12 evenfall zkusil bych v sim-u nastavit thread --random a párkrát to projet jestli se to někde nesekne
15:12 evenfall (start; stepa --count 1000)
15:17 xstill_ hm, nakonec jsem vymlátil kde jsem z evaluátoru, snad z toho něco zjistím
15:24 xstill_ aha, mutex_lock se volá pod maskou, ještě zjistit proč…
15:28 xstill_ tyvole, to je zase další bug v pthreadech
15:30 xstill_ pthread_cond_wait si zamknul masku a pak vesele volal pthread_mutex_lock
15:30 xstill_ super… zabil jsem tím asi tak 2 hodiny
15:40 xstill_ mornfall: můžeš tahat, u mě testy prošly
15:40 xstill_ obvzlášť důležitý je ten jednořádkový patch na konci…
15:41 xstill_ nechápu jak to někdy mohlo fungovat
15:45 evenfall xstill_: to je dobrý, já na ten stejnej bug totiž narazil taky (teda nedostal jsem se k jeho řešení, ale když jsem pullnul ten fix tak mi přestalo cyklit future-exits.cpp :)
15:45 xstill_ :-D
15:45 evenfall nechám doběhnout testy takhle a pak se podívám na unwinder
15:46 xstill_ ten bug totiž odhalilo to spravení _wait
15:46 evenfall aha kruci :-)
15:46 xstill_ příště už to divine pozná (po těch mých změnách v InterruptMask), alespoň teda v pthreads
15:47 xstill-m joined #divine
15:54 xstill_ joined #divine
16:04 xstill_ joined #divine
16:07 xstill_m joined #divine
16:11 xstill_m joined #divine
16:11 evenfall xstill_m: nějak se množíš :D
16:12 xstill_m Jo jsem tu víckrát než ty teď
16:18 xstill_ tak jo, zase mám fungující laptap \o/
16:43 evenfall tak zbývá zjistit proč pthread_exit faultuje s invalid heap dereference v diosu
16:53 xstill_ mornfall: můžeš si pullnout, přidělal jsem to nedeterministické unwindování stacku při uncaught_exception
16:57 xstill_ ten unwinder je na stromovém stacku docela elegantní věc :-)
17:00 evenfall xstill_: tak si ještě oprav překlep a zkus se zamyslet jestli by to nešlo bez Nondeterministically -> Nondet. (protože takhle musí člověk přečíst celou větu než pochopí co to mělo být)
17:05 xstill_ evenfall: asi jsem slepej, kde je překlep?
17:09 xstill_ aha, ho -> no
17:09 evenfall bingo
17:09 xstill_ ale jak to jinak nazvat moc nevím, stejně nemá moc smysl číst půlku commit message…
17:10 evenfall o to nejde, ale tu větu člověk musí číst 2x
17:13 xstill_ dobře, ale to nic nemění na tom, že nevím jak to nazvat líp
17:23 evenfall já taky ne, ale zkusím to vymyslet až dořeším tady ten fault v diosu
17:44 evenfall ### 120 tests: 120 passed, 0 skipped, 0 broken, 0 failed
18:19 yaqwsx joined #divine
18:19 yaqwsx evenfall: To ti prochází testy s mými patchi?
18:20 evenfall yaqwsx: po tom co jsem v nich opravil chyby, jo :)
18:20 evenfall yaqwsx: asi si pullni
18:20 yaqwsx Ok
18:21 evenfall yaqwsx: hlavní problém byl, žes rozbil real_pthread_t
18:24 yaqwsx Právě to čtu.
18:25 yaqwsx Těm Pthreadům jsem nevěnoval mnoho péče, když se budou přepisovat... :)
18:27 evenfall ale tak fungovat by to mohlo aspoň trochu :P
18:28 evenfall asi je budeš muset přepsat ty, když je furt rozbíjíš :-)
18:29 evenfall doufám že lastThread ti nebude moc chybět
18:31 yaqwsx Pokud se tím nic nerozbilo, tak by nemělo.
18:31 yaqwsx Já myslel, že fungovat budou - jen nebudou efektivní.
18:32 yaqwsx Ok - dodělám traceování infa z DiOSu a pustím se do PThreadů.
18:32 evenfall :D
18:33 yaqwsx BTW: Jak je na tom hypercall pro extrakci pointerů?
18:34 evenfall zatím nijak
18:35 evenfall yaqwsx: jo, to utsname.h jsem vyměnil, tak ten patch pak asi můžeš zahodit
18:36 evenfall jo a strncpy dělá něco jiného než jsi chtěl
18:36 yaqwsx evenfall: Jj, viděl jsem a zahodil jsem.
18:39 evenfall (ono totiž strncpy není str funkce, protože vůbec neřeší ukončovací nulu)
18:39 evenfall skazka co jsem někde slyšel je, že to bylo určený k manipulaci s fixed-width řetězci které tu nulu nemají
18:40 xstill yaqwsx: bylo by potřeba dostat ty pthready do stavu kdy pthread_t bude moct být totéž co DIOS tid (což mimo jiné znamená, že se to zase vleze do longu), ideální by bylo zníčit ltid úplně a mělo by to jít. Já o tom mám nějakou představu ale dřív než v úterý se k tomu nejspíš nedostanu
18:40 evenfall xstill: no já udělal z pthread_t void*
18:41 evenfall xstill: podle novýho posixu to může být třeba i struktura, kdyby se chtělo
18:42 evenfall jinak si myslim, že yaqwsx ví že má zničit ltid
18:42 yaqwsx evenfall: Eh, chtěl jsem strlcpy ne strncpy. Ty funkce mají fakt blbé názvy.
18:42 evenfall (jediný co je teď trochu regrese je to s těma thread id v sim-u)
18:42 evenfall yaqwsx: strlcpy chceš, ale počítám že v pdclibu není
18:43 evenfall ona teda není ani v glibc
18:43 yaqwsx Když bych použil správné písmeno, tak bych na to přišel :D
18:44 yaqwsx xstill: Pthready si musím promyslet a hádám, že dříve než v pondělí tu představu mít nebudu.
18:52 xstill joined #divine
19:42 xheno joined #divine
19:44 divine-buildbot Hey! build divine-next-debug #18 is complete: Failure [finished]
19:49 xstill hm, máme tu nějakej build co běží už skoro 7 hodin
19:49 xstill a pak jeden 4
19:51 evenfall tak je zab, nebo je nech vytimeoutovat
19:51 xstill na čemž je docela vtipný, že oba končí na "###       failed: [vanilla] libcxx/atomic.cpp"
19:51 xstill což moc nechápu
19:52 evenfall [ 0:31] found 103118 states and 205815 edges in 102:28, averaging 16.8 states/s
19:52 xstill nechám je vytimeoutovat, nějaký zatížený pheme mě neštvou
20:23 divine-buildbot Hey! build divine-next-debug #21 is complete: Failure [finished]
20:25 yaqwsx joined #divine
20:27 divine-buildbot Hey! build divine-next-debug #22 is complete: Success [finished]
20:37 divine-buildbot Hey! build divine-next-debug #19 is complete: Failure [finished]
20:57 divine-buildbot Hey! build divine-next-debug #16 is complete: Failure [finished]
22:04 divine-buildbot Hey! build divine-next-debug #20 is complete: Success [finished]
23:37 divine-buildbot Hey! build divine-next-debug #17 is complete: Failure [finished]

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