Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2016-11-17

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

All times shown according to UTC.

Time Nick Message
01:19 divine-buildbot joined #divine
01:58 divine-buildbot joined #divine
02:15 divine-buildbot Hey! build divine-nightly-release #18 is complete: Success [finished]
02:48 ilbot3 joined #divine
02:48 Topic for #divine is now DIVINE | http://divine.fi.muni.cz | http://irclog.perlgeek.de/divine/
03:02 divine-buildbot joined #divine
03:22 divine-buildbot joined #divine
03:46 divine-buildbot joined #divine
04:02 divine-buildbot joined #divine
04:11 divine-buildbot joined #divine
04:24 divine-buildbot joined #divine
05:47 divine-buildbot Hey! build divine-nightly-debug #18 is complete: Success [finished]
08:09 yaqwsx joined #divine
08:34 yaqwsx xstill: díky za upozornění.
08:35 xstill yaqwsx: sim2 je kterej test? nic takovýho v repu nevidím
08:35 xstill yaqwsx: do prvních 4 bajtů se ukládá errno
08:36 xstill viz dios.h _DiOS_TLS_Offsets
08:37 xstill protože k tomu musí mít přístup systém, ale zároveň i DiOS, takže úplně nedává smysl aby to bylo v pthread_managed části TLS
08:37 xstill *pthread-managed
08:40 yaqwsx Ok, pak si ale dovolím zavést diosí funkci pro získání TLS z _DiOS_ThreadId a upravit __dios_start_thread, aby tam tuto část TLS dávala implicitně.
08:42 xstill hm, teď nevím co tím myslíš
08:44 yaqwsx __dios_start thread bere absolutní velikost TLS. Ale když nechci TLS, stále se DiOS spoléhá na to, že tam bude místo pro errno.
08:45 xstill __dios_start thread si vždy naalokuje místo alespoň na to errno
08:46 xstill přemýšlel jsem nad tím, jeslti to skrýt z pohledu userspace a vracet z diosu vždy offsetnutý pointr (za to errno) a velkost TLS mít bez errno, ale tam je problém, že dios by to musel pořád přepočítávat ve všech syscallech které vrací thread id si to hlídat.
08:47 xstill Příjde mi rozumnější dát jako kontrakt, že uživalel je zodpovědný za to si tu velikost započítat
08:47 xstill stejně uživatel (=knihovna) musí vědět co tam je, protože k tomu bude chtít přistupovat
08:49 yaqwsx Musím vystupovat, odepíšu později.
09:09 yaqwsx joined #divine
09:32 yaqwsx Ok, zkusím popsat, jak si myslím, že to je (z mobilního internetu mám problém načíst soubory z arke, tak to nemůžu konzultovat
09:34 yaqwsx DiOS potřebuje v TLS 4 byty na errno. Errno se čte a nastvuje v kernel a user částech diosu, nikde jinde. Pokud uživatel chce pro své účely TLS o velikosti 4 byty, musí vytvořit TLS o velikosti 8 bytů. Stejně tak - když chce přistoupit k TLS, musí k němu přičíst DiOS offset. Tak proč nezavést kontrakt, že uživatel zadává jak velké TLS chce + dostane k dipozici userspace funkci pro získání TLS pointeru z threadid?
09:43 xstill moc nevidím jako rozumné zavádět funkci, která převede jeden void * na jinej void *, protože to reálně nesníží riziko chyby. Asi by mi pak dávalo smysl to nějak typově rozlišit, pokud už by se to měnilo. Nebo se vrátit k té myšlence mít DiOS TID offsetnutý, ale to je také náchylné na chyby v DiOSu.
09:44 yaqwsx Vadí mi tam ta věc "Když já jako uživatel něco od DiOSu chci, musím myslet i na to, co chce on", když to jde zautomatizovat... Navíc - už teď je _DiOS_ThreadId skoro opaque - navenek by DiOS nemusel o tomto typu dávat žádné záruky.
09:45 yaqwsx Protože už teď se ztratila ta výhoda toho, že je to pointer - jenom přetypuji a mám TLS. Teď musím přítat offset (a myslet na něj)
09:46 xstill dal by se z toho udělat pointr na strukturu, něco jako struct { int __errno; char __userspaceTLS[0] }
09:47 xstill pak se dá klidně buď poskytnout ta funkce _DiOS_ThreadId -> void *, nebo dá říct, že _DiOS_ThreadId bude teda jen ta userpsace část.
09:48 xstill pokud by ta userspace část byla tagovaná nějakým typem, něco jako struct { char __data[0]; }; tak by to i bylo typově rozlišitelné a tím pádem bych se míň bál, že se to v DiOSu na rozhraní zapomene udělat
09:54 xstill takže celkem něco jako struct __DiOS_TLS_Tag { char __data[0]; }; struct __DiOS_TLS_Internal { int __errno; __DiOS_TLS_Tag __userspace; }; typedef __DiOS_tls_tag *_DiOS_ThreadId;
09:54 xstill * s jedním _ na začátku
09:54 xstill (u typů)
09:58 xstill s tím, že _DiOS_TLS_Internal by bylo opaque a _DiOS_TLS_Tag by mohlo nakonec být "viditelné" (možná by se mohlo jmenovat jen _DiOS_TLS)
10:08 mornfall bam, current updated
10:10 xstill jj. co říkáš na to co tu řeším s yaqwsx?
10:11 mornfall čtu čtu
10:12 mornfall pokud to s těma strukturama nebude moc hnusný tak to je asi rozumnej plán
10:12 yaqwsx mornfall: U mě je ještě patch, který deinicializuje VFS na konci. Při jeho implementaci jsem narazil na drobný bug v simu - když dealokuji něco, co je v registrech (např. celý kontext nebo globals), tak sim zasegví. Není asi velká chyba (jasně, je blbost něco takového dělat), ale mohlo by to místo segvení vypsat chybovou hlášku. Nevím, jestli budu mít dneska čas se na to podívat a případně opravit (proto to píšu i sem).
10:13 mornfall to je určitě bug (ze strany divinu/simu)
10:16 mornfall podívám se na to
10:22 yaqwsx xstill: Nemáš nějaký Cčkový soubor, na kterém DiOS vypisuje boot info dvakrát? Nedaří se mi tu chybu znovu vyvolat.
10:25 xstill yaqwsx: nemám, a viděl jsem to jen v simu
10:25 xstill mornfall: nemí možný, že je to bug v simu, když se pouští trace nebo start znovu?
10:26 xstill že se nějak zavolá __boot 2x?
10:28 mornfall nevim, vidim tam jen jeden boot
10:29 mornfall nemáš na to reproducer?
10:30 xstill však o řádek víš než jsem psal tobě jsem spal, že nemám
10:34 mornfall jo já to pochopil jako že nemáš žádnej kde by se to stalo mimo sim
10:34 xstill aha
10:35 xstill včera jsem to viděl při nějakém větším debugování, ale nemám to teď po ruce
10:35 mornfall to je jedno, ono se to zase objeví
10:42 mornfall ale řekl bych že to je spíš problém sim-u než diosu
10:42 mornfall yaqwsx: ale stejně by to chtělo to bootinfo uklidit :)
10:42 yaqwsx Jakože pokud se nic netracuje, tak ho úplně zlikvidoat? Případně nechat jenom nějakou welcome hlášku?
10:43 mornfall tak # DiOS boot info a 2x --- nepůsobí kdovíjak
10:44 yaqwsx Ok, předělám na welcome hlášku + případný YAML dokument
10:44 mornfall jo, a pokud ta welcome půjde jako info trace, tak asi potřebuje - (nebo to může být text trace)
10:45 mornfall ty --- bych zrušil úplně, to by nám ten yaml stream spíš rozbilo než vylepšilo
10:46 mornfall yaqwsx: Let ... to choose má být Let ... choose, a píše se whether
10:47 mornfall yaqwsx: a context se neničí před 'end of exploration' spíš před ukončením programu (klidně tam můžou být různý větve)
10:49 yaqwsx Ok, amendnu.
10:49 mornfall a já potřebuju kafe, brb
10:51 yaqwsx Hotovo
10:52 mornfall a já jsem zreprodukoval triple boot info :D
10:52 mornfall jen nevim ještě přesně čím
10:53 mornfall trace 0\nstart -> double
10:56 mornfall ono aj start start to udělá, protože ten buffer se nikdy nemaže...
11:11 mornfall yaqwsx: budeš mě nenávidět, ale za syscall máš dvojitou mezeru (to bych ještě rozdýchal), ale whether *to* reschedule (to tam předtím bylo, nebylo?)
11:13 yaqwsx Nenávidět tě nebudu. Opraveno.
11:13 mornfall good, a teď ten bug v simu
11:18 mornfall yaqwsx: hm, ten kód teďka nedělá tu věc co ten sim segvila, nebo jo? (dealokace stavu)
11:21 yaqwsx Stav nechává být, ale dealokuje jenom jeho součásti.
11:21 yaqwsx Ale stačí napsat na konec scheduleru delete_object( ctx );
11:21 mornfall a segvilo to v debugu nebo v release? něco jsem vytvořil jako testcase
11:21 mornfall v debugu to končí na E: .../next/bricks/brick-mem: 637:
11:21 mornfall expected _s->block[ b ]
11:21 yaqwsx Zkoušel jsem to v release. Pravda.
11:22 mornfall ok, tak to asi bude stejnej bug kterej vidím
11:23 mornfall na to teda zdechne aj verify
11:31 yaqwsx mornfall: kdyžtak u mě je patch utišující DiOS.
11:32 mornfall yaqwsx: těm --- furt nerozumím (nebo jsme se včera možná nepochopili)
11:32 mornfall --- uprostřed yamlu začne novej dokument
11:33 mornfall zejména "Dios boot info\n---" je celkem nesmyslný, protože ten 'klíč' je na konci dokumentu
11:34 mornfall mělo by to spíš vypadat jako DiOS boot info: a pak zbytek odsazenej
11:35 mornfall hm, yaml-cpp není *úplně* malý
11:39 mornfall http://www.yaml.org/spec/1.2/spec.html#id2800132 (ad yaml character stream vs yaml document)
13:21 yaqwsx joined #divine
15:29 xstill na tabuli nám chybí autoinstalace cmake a dalších závislostí
15:37 mornfall technicky vzato je na to pozdě; možná by ale stálo za to posunout to celý o týden
15:47 xstill no, zas když to neuděláme, tak budeme mít o to víc mailů od nešťastných neschopný lidí jak ten co píše teď
15:50 xstill hm, fakt nechápu co píše, vždyť DIVINE 4 ani nemá configure
15:56 mornfall ano, nicméně už to co bylo naspecifikovaný včera je na hranici toho co jsme za 2 týdny schopni udělat a otestovat
15:56 mornfall asi prostě potřebujeme víc času
15:56 mornfall a trochu přibrzdit s novými featurami a víc ladit
16:13 xstill nojo, však už převážně jen testujeme a opravujeme to co nefunguje
16:13 xstill v C asi nedokážu udělat enum menší než int, že?
16:19 xstill vlastně, kašlat na C
17:39 divine-buildbot Hey! build divine-next-debug #120 is complete: Failure [finished]
18:03 divine-buildbot Hey! build divine-next-debug #121 is complete: Success [finished]
20:51 mornfall /o\ ... ale zajímavej error
20:52 mornfall (teoreticky by to mohlo být nedostatkem místa na disku, ale asi je málo pravděpodobný že se to trefí zrovna tam...)
20:52 xstill jakej?
20:53 mornfall píše Alan zase
20:54 mornfall kde lidi chodí na myšlenku posílat build errory jako screenshoty
20:55 mornfall 4.5M bezmála
20:59 xstill tak jablíčkář
22:30 mornfall hm, choices z verify je dost nekompletní
22:31 mornfall trace length is 410 (počet stavů), choices made: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
22:51 mornfall hm, -C,-I nefunguje (protože nevolá driver.addDirectory)
22:58 mornfall ok, snad opraveno
23:02 mornfall ultimátně by to ale asi měl řešit cc::Compile
23:25 mornfall what the frill... když si přidám výpis do výpočtu těch choices tak to funguje

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