Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2015-11-21

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

All times shown according to UTC.

Time Nick Message
08:24 xstill není divný, když se mi memory leak objeví až v EXIT stavu?
08:30 xstill není
08:30 xstill když člověk neumí programovat…
09:15 xstill mornfall: mám takový problém s tou čistící transformací: mám takový podezření, že propagace výjimek je rozbitá, on totiž DIVINE nastavuje handler v __cxa_exception podle nevrchnějšího landingpadu, a pak už ho nikdy neaktualizuje, a tím pádem pokud je navrhu cleanup landingpad, tak informace o té výjimce se stradí a nic (ani catch ( ... )) ji nedokáže chytit
09:45 xstill hm, ty přeskakuješ cleanup handlery při hledání v __cxa_throw_divine
09:48 xstill mornfall: http://pastebin.dqd.cz/RcHK/ tu máš protipříklad čistě v C++, bez transformací, divine tam tu výjimku nechytí
09:48 xstill když to zkompuluju, tak to projde (nejsou tam vlákna)
09:49 xstill ona ta propagace nefunguje pokud se to propaguje přes LP, kterej není *jen* cleanup
09:49 xstill otázka je co teď s tím, mám tu transformaci, která by měla být korektní, ale nemám jak ji vyzkoušet a použít, protože divine neřeší výjimky korektně
09:52 xstill tím pádem c++ v podstatě nejde verifikovat s weakmem, protože ten std::bad_alloc už v životě nechytím pokud projde přes jedinej landingpad, kterej není jen cleanup a nechytá ho
09:59 xstill otázka je co s tím, v principu bys potřeboval něco jako znova zavolat __cxa_throw_divine v každém resume
09:59 mornfall to je nějaký divný ne?
09:59 xstill co je divný?
10:00 mornfall v __cxa_exception se to nastavuje jen jednou, ale ne na první landingpad, ale na ten kterej dává can_catch
10:00 mornfall pro ten danej typ výjimky
10:01 xstill hmhm pravda
10:01 xstill proč to potom nefunguje?
10:02 xstill navíc když tak o tom přemýšlím tak ten selektro musí být globálně platne, přes všechny landingpady, ne? protože personality o tom landingpadu nic netuší
10:03 mornfall no to ne
10:03 mornfall to je specifický pro landingpad
10:04 mornfall nejde dát globální číslování všem typům v programu (dlopen a tak)
10:04 xstill aha ty ho tam nastavuješ do toho handlerSwitchValue
10:04 mornfall ale že bych zrovna měl někde funkční divine se říct nedá
10:05 xstill antea:public_html/dev/divine/next-xstill
10:06 mornfall to mi má nějak pomoct? :) tam vidim jen zdrojáky...
10:07 xstill … ze zdrojáků se dá udělat funkční divine
10:07 xstill binárka z archu by ti pomohla míň
10:08 mornfall zdrojáky mám taky, ale než bude binárka chvíli to potrvá
10:09 xstill hm, ono to hlavně vlítne do toho catch bloku v tom foo
10:11 mornfall zrovna chytání int vs double asi moc otestovaný není, jestli ještě nechytáš úplně jinej bug...
10:13 xstill no jo, chytne to double v divine
10:13 xstill normálně to nechytne double
10:15 xstill no jasně, ty sice nastavíš selektor podle toho hlubšího landingpadu, ale pak ho dáš tomu vnějšímu, žejo
10:15 xstill takže ono to chytne cokoli co tam dáš
10:15 mornfall nojo, on nepozná že má udělat jen ten cleanup... achjo
10:16 xstill takže potřebuješ v __cxa_throw_divine házet jen nejbližšímu landingpadu a resume musí znova pustit resolving
10:17 mornfall no, to je trochu složitější
10:17 xstill navíc takhle ti může zmizen uncaught exception pokud existuje po cestě cleanup ale ne chytnutí
10:17 xstill ?
10:17 mornfall nemůže
10:18 mornfall jen teď nevim jestli je dobře že to je unhlandled exception když je cestou něco co nepoužívá invoke
10:19 xstill podle mě jo, skočíš na ten první LP co je resume, a tam pak už jen unwinduje v execution.h v implementaci resume, která to klidně odroluje celé
10:19 xstill jo to myslím, že je v pořádku ta unhandled exception pokud po cestě není žádný LP
10:24 mornfall já něco píšu a ty čteš něco jinýho
10:24 mornfall *něco co nepoužívá invoke* ne nic nepoužívá invoke
10:24 mornfall ale možná jo, to je teď jedno
10:24 mornfall otázka je proč potřebuješ vyrábět catch a nestačí ti cleanup?
10:25 mornfall nebo to máš jen nějaký test na kterém se to rozbije aj bez té transformace?
10:26 xstill však ten co jsem ti poslal se rozbije bez jakékoli transformace, to jsem ti psal
10:26 mornfall eh
10:26 mornfall tak ještě jednou
10:26 xstill v transformaci nastane problém pokud přidám cleanup někde kde už byl catch
10:26 mornfall ta transformace potřebuje vkládat nový catch bloky?
10:27 xstill jestli myslíš __cxa_catch_begin ... _end tak to ne
10:28 mornfall já jen nevidim jak kód kde se ten bug neprojevuje transformuješ na nějakej kde se projevuje
10:28 mornfall hm
10:28 mornfall ne, pokud jsou cestou čistý cleanupy tak by to mělo fungovat, to se snad i testuje
10:30 mornfall bug vzniká když máš nad sebou 2x catch tak, že ten horní není nadmnožina toho dolního
10:31 mornfall (a musí to být catch, teda landingpad kterej něco chytá, ne čistě cleanupovej)
10:33 xstill no, bude v kódu někde funkce, která chytá nějakou výjimku, řekněme X, takže má LP s 1 clause co chytá X, a ta funkce má lokální proměnnou (ale nemá cleanup), takže já potřebuju každou výjimku přizastavit, zavolat __lart_weakmem_cleanup na tu lokální proměnnou a pak resume, tudíž mi vznikne LP, kterej: a) chytá X b) cokoli jiného akceptuje pře cleanup a následě vyhodí přes r
10:34 xstill esume.
10:37 xstill a ten příklad zvlášť jsem ti dodal hlavně proto, abys mi věřil, že to není chyba u mě
10:39 mornfall nojo, ale ten popis furt neříká kde vznikne ten novej catch
10:39 mornfall to přece žádný klauzule (krom cleanup) nepřidává?
10:40 xstill to je úplně irelevantní, máš tu příklad kde divine v kódu přímo vyprodukovaném clangem bez jakékoli transformace řeší výjimky blbě…
10:40 xstill to že se to projeví i při transformaci nemá vliv na to kde je chyba
10:41 mornfall no když je to irelevantní, tak se na to podívám někdy příští týden, teď nemam čas to řešit
10:56 xstill no, to že je to chyba i bez transformace nic nemění na tom že na ní narážím a nemůžu kvůli tomu verifikovat weakmem s c++
15:53 xpetkan joined #divine
15:54 spito heh, proč make neumí zjistit, že došlo ke změnám?
15:56 xstill chybí ti závislost, asi
23:51 spito ha, chytil jsem ho do pasti

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