Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2016-11-23

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

All times shown according to UTC.

Time Nick Message
01:43 divine-buildbot joined #divine
02:03 divine-buildbot joined #divine
02:16 divine-buildbot joined #divine
02:47 ilbot3 joined #divine
02:47 Topic for #divine is now DIVINE | http://divine.fi.muni.cz | http://irclog.perlgeek.de/divine/
02:56 divine-buildbot joined #divine
04:01 divine-buildbot joined #divine
04:37 divine-buildbot joined #divine
08:59 yaqwsx joined #divine
09:27 xstill_ joined #divine
11:38 spito píšu si cmake a narazil jsem na podivné chování
11:39 spito ručně jsem si nastavil překladač "set(CMAKE_CXX_COMPILER /nejaka/cesta)"
11:40 spito následně na to si nastavím flagy "set(CMAKE_CXX_FLAGS "-std=c++11")"
11:40 spito aby se mi propsaly flagy, musím cmake spustit 2x
11:40 spito když napíšu "set(CMAKE_CXX_FLAGS "-std=c++11" CACHE "" FORCE)", tak to funguje, ale přijde mi to škaredé
11:41 spito jde to udělat nějak jinak?
11:44 xstill spito: set(CMAKE_CXX_FLAGS …) musíš dát před project pokud to chceš mít jako default, který se ale dá přepsat z commandline
11:44 spito mám to právě před projektem
11:45 spito před těma setama mám akorát find_package(PkgConfig REQUIRED)
11:58 yaqwsx Assertí mi verify na http://pastebin.com/iYNe4YmJ, expected lastBeforeErrorOffset < trace.size() a zatím úplně nerozumím, v čem je problém.
12:26 xstill spito: ten set ale musí být do cache
12:27 xstill spito: https://stackoverflow.com/questions/18802023/cmake-set-compiler-flags-in-way-that-can-be-changed-by-user
12:27 xstill yaqwsx: to znamená, že se vygeneroval moc krátkej trace
12:27 xstill otázka je proč
12:28 xstill (asi jen 1 stav)
12:28 xstill aha, protože to je assert v bootu
12:28 xstill mornfall: ^^ to je na tebe
12:30 xstill respektive, je potřeba nějak zdetekovat, že error v bootu a ohlásit to nějak rozumně
12:34 yaqwsx xstill: To jsem pochopil, ale nepochopil jsem, proč je krátký. Ten assert v bootu totiž funguje tak, že vytvoří stav se selfloopem.
12:35 yaqwsx Nebo je třeba vytvořit iniciální stav + stav se selfloopem?
12:35 xstill yaqwsx: zjisti mi v debuggeru co je LastBeforeErrorOffset
12:35 xstill yaqwsx: selfloop na initu by měl fungovat
12:35 xstill ale netestoval jsem ho
12:36 yaqwsx Je to 1
12:36 xstill jo, tak to je chyba, podívám se na to vgdb až docvičím
12:36 yaqwsx Resp. last je 1, velikost tracu je 1
12:37 xstill jo, last má být 0
12:37 xstill pokud je to selfloop
12:37 yaqwsx Ono se to nedostane přes if v ex.edges
12:38 xstill jakto?
12:38 yaqwsx To ještě nevím.
12:38 xstill nejsou stejné, nebo není error?
17:44 mornfall nevim jestli je v sim-u ještě jinej bug, ale to že -o trace:thread změní protipříklad jsem právě ověřil
17:44 mornfall ./test/divine verify --threads 1 -o trace:thread test/pthread/deadlock-partial.2.c vs bez trace:thread
17:45 mornfall choices made: 0^16 1^5 2^2 1 3^3 2 3
17:45 mornfall choices made: 0^20 2^3 0 3^3 2 3
17:45 mornfall (to ještě teda neznamená že to změní choice pro stejný protipříklad, ale tohle je samo o sobě dobrá indikace že by se to mohlo stát)
17:49 mornfall odpovídající trace (s trace:thread) v simu funguje jak má, ten druhej zapadne kamsi do cyklu někde jinde
18:18 xstill jo, já omylem pouštěl trace:threads
18:18 xstill jo, protože to má v yaqwsx v helpu blbě
18:23 yaqwsx joined #divine
18:24 xstill (opravil jsem to)
18:25 yaqwsx joined #divine
18:26 yaqwsx Nápad: "traceovací tabulka" se mění pouze při vzniku/zániku vlákna. Nemohli bychom udělat tradeof s velikostí stavu a mít ji alokovanou stále a dělat do ní změny pouze při vzniku/zániku vlákna?
18:26 yaqwsx xstill: Fungovat by mělo jak thread, tak i threads
18:27 xstill threads nefunguje
18:29 yaqwsx xstill:dios.cpp:109
18:32 xstill a proč potom dává verify (jednovláknové) jiný výsledek s -o trace:thread a -o trace:threads?
18:33 yaqwsx že by std::string alokoval při o znaku více?
18:34 xstill navíc když je tam najakej bordel tak se ten warning neobjeví trace (případného) protipříkladu
18:35 xstill (v run to je vidět, je to tím, že je to trace po čas bootu)
18:35 xstill nicméně threads podle něj není chyba
18:35 xstill to je dost divný
18:36 xstill a v bootu nefungují breakpointy
18:36 mornfall ono je klidně možný že když se what == "threads" vyhodnotí na true, tak ten druhej string se už nebude alokovat
18:37 xstill jakje druhej string?
18:37 mornfall if ( what == "threads" || what == "thread" )
18:38 xstill jo, to vidím před sebou a moc nechápu jak to může nefungovat
18:38 mornfall jak nefungovat
18:38 mornfall dyť to funguje
18:38 xstill 19:32 < xstill> a proč potom dává verify (jednovláknové) jiný výsledek s -o trace:thread a -o
18:38 xstill trace:threads?
18:38 mornfall jenže když tomu dáš trace:threads vs trace:thread tak jsou v bootu jiný alokace
18:39 mornfall protože std::string( "thread" ) se nevyhodnotí
18:39 mornfall pokud matchne "threads"
18:39 xstill nojo, fuj
18:42 yaqwsx mornfall: Nemohlo by to předalokování traceování vláken řešit náš problém?
18:43 mornfall yaqwsx: úplně ne, protože alloca taky alokujou z haldy
18:43 mornfall navíc za to zaplatíš aj při verify (ne moc, ale něco jo)
18:43 mornfall no nebo vlastně ne nutně
18:43 yaqwsx mornfall: Ano, ale budu mít stejný program při verify i simu
18:43 mornfall boot se z toho může asi klidně vyjmout
18:44 mornfall yaqwsx: jako že bys to udržoval jako zrcadlo thread storage?
18:45 yaqwsx jj, které updatuji jenom při vzniku/zániku vlákna
18:46 mornfall asi jo no... horší je, že to je trochu fundamentální problém
18:46 mornfall protože to celkem jasně demonstruje jak moc konkrétní valuace ukazatelů ovlivňuje chování
18:48 mornfall je pravda, že to je docela speciální případ díky tomu sortu podle objid
18:59 yaqwsx joined #divine
19:01 yaqwsx mornfall: fundamentální? Vždyť teď máme problém, protože spouštíme dva rozdílné programy...
19:05 mornfall yaqwsx: tím jsem myslel z pohledu verifikace -- on si to občas někdo uvědomí, ale teoreticky bys měl zkoumat všechny permutace paměti
19:05 mornfall (když jde z ukazatele vyrobit int, resp. srovnat ukazatele)
19:05 yaqwsx Ok, pravda.
19:05 mornfall (v tom prvním případě nejen permutace pořadí, ale v podstatě všechny možný alokace adres)
19:58 mornfall v next-u je XXX patch který by to mohl řešit, pokud nepovede ke kolizím (na benchmarkovacím modelu co na tohle používám to regresi zdá se nevyrobilo)
19:59 mornfall hodně ale záleží na bootu, protože ten nastartuje hashchain pro hlavní vlákno když mu vyrábí rámec
20:00 mornfall (asi by stačilo aby se ten rámec alokoval hned na začátku)
20:02 yaqwsx joined #divine
20:02 mornfall yaqwsx: (asi viz log)
20:04 mornfall (může se klidně alokovat fixně velký a předá se startMainThread kterej si ho resizuje)
20:04 yaqwsx Zatím se nechytám.
20:05 mornfall https://irclog.perlgeek.de/divine/2016-11-23#i_13619789
20:06 yaqwsx JJ, log jsem četl ale zatím nepobral :)
20:07 yaqwsx Nerozumím, co to přesně mění.
20:07 mornfall ten patch co je v nextu + změna bootu, kde se naalokuje rámec dostatečně brzo, by ten problém se změnou objid mohla řešit
20:07 mornfall mění to, že ten kus od vstupu do scheduleru až po jump do userspace se z toho objid hashchainu 'zapomene'
20:08 yaqwsx Ahá, už rozumím. Super.
20:08 mornfall pak už se běží normálně, tzn. případný syscall se naváže na user kód
20:09 mornfall (pokud ten syscall vrátí do user kódu, tak by se to mohlo trochu zamotat, ale snad ne moc)

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