Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2013-10-20

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

All times shown according to UTC.

Time Nick Message
00:59 mornfall ad /home/mornfall/dev/divine/mainline/divine/algorithm/owcty.h: 317: assertion `o.extension( t ).predCount() >= 1' failed;
01:00 mornfall - bittuple používá osmibajtový store
01:01 mornfall - když má stav míň než 4 bajty, může manipulace s extension zapisovat do extension vedlejšího stavu
01:01 mornfall - přepisuje se jen začátek extension, tzn. parent pointer
01:04 mornfall zdá se ale, že když je strategicky umístněná hranice cacheline tak se poperou tyhlety přepisy a manipulace s predCount
01:16 mornfall teda přijde mi to dost divný s těma cacheline, nevím co přesně by se mohlo rozbít
01:17 mornfall každopádně ale rozbije se to jak s 21 bajtovými tak 22 bajtovými bloby (extension owcty má podle všeho 20 bajtů)
01:26 mornfall ha
01:57 mornfall nevim jestli se mi to zdá, ale ten guard+acquire jak tam je teď v inicializaci volá lock lock unlock a když končí fce tak zase unlock, takže to vlastně nic nezamyká
01:58 mornfall hm, volá jen lock unlock ... lock
01:58 mornfall konstruktor (lock), kopírovací konstruktor (nic), destruktor temporary (unlock) ... destruktor (unlock)
01:59 mornfall blbý ale je, že jsem to opravil a furt to padá s tím assertem
02:09 mornfall ale z nějakýho nepochopitelnýho důvodu to funguje aj když se volá kopírovací konstruktor
02:22 mornfall /bin/sh: line 1: 25889 Segmentation fault      (core dumped) /tmp/mornje-build/divine/mainline/default/divine/instances-generator 128 10
02:27 mornfall jo, ta spitova verze funguje čistě díky return value optimisation (která je teda nepovinná)
02:28 mornfall a instances-generator segví kvůli http://llvm.org/bugs/show_bug.cgi?id=12208 :-)
02:28 mornfall každopádně to ale nevysvětluje bug s predCount-em (ale když teda zvětším stav na 4 bajty tak to začne fungovat)
02:28 mornfall resp. přestane padat
02:28 mornfall jdu radši spát...
07:08 spito joined #divine
07:10 spito Owcty nefunguje právě tehdy, když je nějaký uzel v rámci eliminace eliminován takovým způsobem, že se zkusí eliminovat i pokud počet iterací dojde na nulu.
07:11 spito No a to padne na assertu.
07:14 spito Takže si myslím, že se stane to, že se jeden vrchol dostane na zpracování oběma vláknům a tam se to stane.
07:15 spito Ale je to jenom moje domněnka.
07:58 xstill spito: u těch guardů bys mě smazat copy konstruktory
07:59 xstill a asi tam budeš muset dát move
07:59 spito Eh?
08:00 spito Kde se to může kopírovat?
08:01 spito Ajo
08:01 spito Hmmm
08:01 spito Jo
08:07 xstill no ono je celkem jedno jestli se to může kopírovat, guard by neměl mít copy-konstruktor
08:08 xstill a ono se to i kopíruje při konstrukci přes to auto
08:08 xstill respektive při returnu z acquire
08:13 xstill na týhle chybě je docala děsiví, že si to nikdo z nás až do teď nuvědomil
08:23 spito No však jsem si to uvedomil
08:24 spito *Děsivý
08:25 xstill to jaký dělám hrubky je taky děsivý
08:26 xstill já narážel na to, že už to v mainline nějakou dobu je, já se na to koukal a Mornfall určitě taky když to tam dával...
08:27 xstill mornfall: jak může BitTuple přepisovat něco mimo jeho hranice? To je docela zásadní chyba ne?
08:27 spito No, ono je otázka nakolik se při opuštění z fce vola copy ctor a nakolik move ctor
08:28 xstill hm, pokud vracíš temporary tak by se asi mohl volat move, to je fakt
08:28 xstill otázka potom ještě je co ten výchozí move dělá
08:28 xstill a co vlastně přesně dělá to auto
08:30 xstill protože ono se asi bude chovat jako <store>::Guard guadr( <store>::acquire( s1, s2 ) ), což je otázka jestli si uvědomí že je temporary
08:30 xstill i když by mohl
08:30 xstill tak nevím
08:31 spito Ale jo, já to opravím
08:31 xstill dík, pak už bude jasný, že to dělá co má
08:49 spito A to jsem si chvilku bláhově myslel, že umím programovat
08:49 spito :-D
08:55 spito Nojo, už to sviští
08:56 spito Ale nejprve musím umýt schody
08:56 spito To je prostě standardní situace: na návštěvě u rodičů
09:13 spito joined #divine
09:25 spito__ joined #divine
09:28 spito joined #divine
09:45 SirGlorg joined #divine
10:13 spito_ joined #divine
10:25 mornfall no, já ty guardy mám opravený to nemusíte řešit
10:26 mornfall ono to acquire je hlavně úplně zbytečný
10:26 spito eh?
10:30 xstill co? jak zbytečné
10:30 xstill mornfall: by neškodilo když už na něco upozorníš a pak to opravíš napsat, že jsi to opravil když nepošleš patch
10:31 mornfall 03:59 (@ mornfall ) blbý ale je, že jsem to opravil a furt to padá s tím assertem
10:31 spito mornfall: jasný, to jsem si nakonec taky přečetl
10:32 spito jenom třeba jaksi nechápu podstatu sdělení "ono to acquire je hlavně úplně zbytečný"
10:32 xstill aha
10:32 mornfall spito: to může dělat konstruktor toho Guardu
10:32 mornfall hnedka pushnu patch ještě to překládám
10:33 spito mornfall: no, ono to acquire zjišťuje validitu vrcholu
10:33 spito to je asi tak to hlavní, co to dělá
10:33 mornfall jo, ale to je Vertex, ten má pointr na store, takže to neva
10:34 mornfall dal jsem mu bool valid, vydrž tři minuty ;-)
10:34 spito jojo
10:34 mornfall třeba jsem to zmastil, byla hluboká noc
10:35 mornfall hm, ale teorie s překrytím zápisu v bitcopy asi neobstojí, zrovna mi to spadlo na interpretovaným DVE
10:37 mornfall spito: jedna možnost nad kterou jsem koumal bylo že firstIndex/lastIndex nějak zduplikujou hraniční vrcholy
10:37 mornfall spito: s tím že volají bump() takže se to může posouvat
10:37 mornfall spito: ale jestli je to tím tak jsem nepřišel na to proč
10:38 mornfall a pak by se to mělo asi projevovat deterministicky
10:38 mornfall pokud by ale shared visitor duplikoval hrany, tak se musí rozbít všechno, počínaje metrics
10:42 spito mornfall: k tomu by snad nemělo vůbec dojít
10:47 mornfall každopádně ty write overlapy to nejsou a jsou nejspíš neškodný v tomhle případě, ale asi to chce někam napsat komentář
10:47 mornfall že kdybys měl třeba 1 bajt extension a 1 bajt stav, tak se to nejspíš úplně krutě rozsype
10:48 spito v bittuple?
10:48 mornfall jo, bitcopy
10:48 mornfall 185: assertion `o.extension( st ).predCount() > 0' failed;
10:48 mornfall ha
10:49 mornfall 317: assertion `o.extension( t ).predCount() >= 1' failed;
10:49 spito mornfall: tak jo, máš pravdu
10:49 spito iterátor je úplně rozbitý
10:49 mornfall a to je prosím pěkně v první reachabilitě
10:50 mornfall spito: jakto?
10:50 xstill a neměl by bittuple teda mít takovou velikost aby nehrabal kolem sebe? Protože tohle je hodne neintuitivní...
10:50 mornfall xstill: no, to moc nejde, pokud nechceš hrabat po bajtech -- to je totiž zase hodně pomalý
10:51 spito mornfall: protože přejede end
10:51 mornfall představa že budeš osmibajtový pointry kopírovat na 8x v cyklu dost bolí
10:51 spito a ani si toho nevšimne
10:51 * spito jde na ham
10:51 xstill jenže tohle ti může udělat race kterej vůbec nebude vidět
10:51 mornfall spito: kdy přejede end?
10:51 mornfall xstill: tak, on valgrind řve jak divej
10:52 xstill super
10:52 mornfall takže zas tak neviditelný to není
10:52 mornfall spito: ale fakt mi není jasný jak může přejet end
10:55 xstill mornfall: protože bump() porovnává s table.size() a ne s lastIndex()
10:56 mornfall xstill: to je snad jedno ne?
10:56 xstill není protože přeskočís store.end()
10:56 mornfall to že numericky projede konec svýho segmentu nevadí
10:56 mornfall end bude ukazovat na první valid buňku
10:57 mornfall přesně na tu stejnou jako begin toho dalšího
10:57 xstill hm, aha
10:57 mornfall a protože end je ostrej tak by to mělo fungovat
10:57 xstill přehlídl jsem ten bump() v konstruktori
10:57 xstill *konstrukotru
10:58 xstill *...
10:58 mornfall něco se hrozně rozbilo
11:00 mornfall 319: assertion `o.extension( t ).inS()' failed
11:00 mornfall to snad ne :-)
11:05 mornfall v tý frontě ani iterátorech to fakt není
11:24 mornfall hm, kdo to byl? jsem si nevšim
11:25 xstill to nevím
11:25 SirGlorg joined #divine
11:26 mornfall Pavel Mičan prej, říká google :-)
11:27 mornfall to jméno jsem už někde slyšel
11:27 SirGlorg aby ne, jsem strasne slavnej
11:28 mornfall to nepochybně :-)
11:29 mornfall co tě k nám přivádí?
11:31 mornfall hej, my jsme fakt dementi
11:32 mornfall spito: nefunguje to protože jedno vlákno ještě vesele dělá queueAll a druhý už prochází graf
11:32 mornfall spito: a queueAll nic nezamyká
11:34 xstill to je skoro na bariéru ne?
11:34 xstill protože queueAll potřebuješ dodělat ne?
11:34 mornfall no, v partitioned ne
11:34 mornfall jen v shared
11:35 mornfall asi ji dáme do store stejně jako guardy
11:35 xstill ono jako nevadí, že ne všichni dodělali reset?
11:36 xstill (v partitioned)
11:36 mornfall ne, protože na ty vrcholy může hrabat výhradně to vlákno který ten reset dělá
11:36 xstill aha, vidím, to vlákno je nezačne zpracovávat dřív než ho dodělá
11:36 mornfall a na predCount od from se nikdy nedíváme
11:37 mornfall (ne že bys mohl vidět from od vlákna který nedojelo reset, stejně)
11:37 mornfall taky možnost dát bariéru do startdetectora
11:38 mornfall nevím jestli je žádoucí aby v shared mohl výpočet začít jen s podmnožinou vláken
11:39 SirGlorg joined #divine
11:39 mornfall SirGlorg: Jseš nějaký nestabilní. :)
11:40 SirGlorg mrzne mi linux, dneska uz 4x restart...
11:40 Topic for #divine is now DIVINE: A Parallel LTL Model Checker (http://divine.fi.muni.cz) | http://irclog.perlgeek.de/divine/
11:40 mornfall když už nám to Nikola opravil v manuálu
11:41 spito mornfall: stačí předělat detekci startu
11:41 spito a je to
11:41 mornfall jo, to jsem tím myslel
11:42 mornfall já jdu ulovit snídani nebo co
11:42 spito teď?
11:42 spito teprve?
11:42 mornfall myslíš že bych měl ještě počkat? :P
11:42 mornfall zdá se mi že už jsem toho na lačno vyřešil dost :-P
11:43 spito no právě taky si myslim
11:44 mornfall normálně se bojim bez hydry dělat release
11:45 xstill což mi připomíná:
11:46 xstill nemohli bysme rozjet hydru jen tak aby buildovala divine (a jeho návaznosti) ne celý nixpkgs
11:46 xstill pak bysme jí mohly pustit třeba na pandora03, tam je 400GB místa, to na chvíli stačit bude...
11:46 xstill případně do té pandory dát ty reklamované disky
11:47 xstill pokud dáme hydře přístup k nix-cache tak by toho nemusala buildovat moc
11:47 xstill a ta pandora není až takový krám (8GB ram je asi největší problém)
11:47 spito mornfall: já teda ještě uplácám ten iterátor
11:47 spito aby fungoval tak nějak pěkně
11:47 mornfall spito: jakej iterátor zas? :)
11:48 mornfall to leda rozbiješ
11:48 mornfall radši tam napiš komentář že to funguje
11:48 mornfall a proč
11:49 spito ne, ono to pomocí bump může přejet hranice sekce
11:49 mornfall tys určitě nečet Dijkstru co leží na stole ;-)
11:49 spito mornfall: ještě ne
11:49 mornfall spito: nečteš backlog
11:49 mornfall xstill ti to vysvětlí, jdu jíst
11:50 xstill spito: bump() tě sice posune za sekci, ale přesně na end(), protože v konstruktoru je bump()
11:51 spito no, jenže tam nikde není porovnání it < end
11:52 xstill v čem?
11:52 spito takže ta hranice se prostě přeskočí
11:52 spito no, kdekoliv při použití
11:52 spito třeba ve for (Vertex : store())
11:53 xstill jo ale pokud přeskočíš hranici, dostaneš přesně end() svého segmentu, což je presně begin() následujícího segmentu
11:53 xstill a range for je skratka pro for ( auto it = ...; it != end(); ...)
11:53 spito jaj
11:53 xstill takže to bude fungovat
11:53 spito jo, jsem tukan
11:53 spito jdu se zahrabat
11:54 spito xstill: jo a okopíroval jsem tvůj 1.dú na svůj 2. dú
11:54 spito tedy přesně jsem okopíroval 7 řádků
11:54 spito :)
11:54 spito to snad nevadí
11:54 xstill super, protože já okopíroval svůj první na druhej, ale Jiřík to snad přežije
11:54 xstill už bych to měl odevzdat
11:54 spito no, já asi taky
11:55 mornfall teď by se tu měl objevit, napsat že všechno vidí a zase zmizet
11:55 spito no, ono to je jedno
11:55 mornfall jistě ale bylo by to veselý
11:55 spito :D
11:56 mornfall mandarinky s kafem to je docela záhul :-P
11:58 spito xstill: tak 8 řádků (2x include, int main, return 0, if rank==0, getrank a getsize)
11:58 spito mornfall: to jde jíst a není z toho člověku špatně
11:58 spito ?
11:59 mornfall překvapivě je to docela dobrý
12:01 mornfall spito: zbariéruješ ten startdetector teda?
12:01 spito mornfall: no jasně
12:02 spito ještě před odpolední kávou
12:02 mornfall fajn, tak já jdu zjistit co ty protipříklady asi
12:02 mornfall jestli to teda není stejnej bug
12:02 mornfall hm
12:02 mornfall takže to nechám radši až na pak :-)
12:02 mornfall aha nenechám, není
12:02 mornfall to padalo v jednom vlákně
12:03 xstill to je ten cyklus v cyklu
12:03 xstill mornfall: co ta hydra?
12:04 mornfall xstill: nevim
12:04 xstill nebo znova nahodit annu
12:04 xstill prostě bez hydry to nepůjde dlohodobě
12:04 mornfall to možná spíš, to asi chcem totiž tak jako tak
12:05 mornfall ona teď jen nenajede protože systemd vs /home
12:05 mornfall teda najede a zase odjede...
12:08 xstill otáka je jestli jí přeinstalovat, nebo zkusit oživit tak jak je
12:08 mornfall to vyjde zhruba nastejno asi
12:08 xstill tak možná chceme zjistit co jí je...
12:12 mornfall no já myslel ve smyslu že udělat install plus deploy a obnovit /etc vyjde na podobně práce jako donutit systemd aby to nechal běžet
12:12 mornfall no, možná i na víc
12:12 mornfall zkusil bych to nahodit do singleuser
12:12 mornfall deploynout tam verzi s automountama nebo něco
12:13 mornfall možná nastavit nějaký vlastní remote logy, i když se obávám že kernel oops se tam už nedostane
12:13 mornfall jo, a /home chci dát na glusterfs
12:14 xstill musím se na něj podívat
12:14 mornfall nenašel jsem nic jinýho co by umělo kompletně zdvojený provoz
12:14 mornfall musí se to mountovat jako FUSE ale to asi nevadí, ten overhead je nejspíš podstatně menší než síť
12:14 mornfall navíc to teda umí aj exportovat jako NFS a CIFS (i když bez automatické redundance)
12:15 xstill a funguje to? :-D
12:15 mornfall no, prodáváme to, tak snad jo :D
12:15 xstill :-D
12:16 mornfall nic proti Oracle, ale Lustre neumí redundantní metadata servery takže je v podstatě k ničemu
12:16 mornfall z našeho hlediska aspoň
12:16 mornfall protože jak ti umře MDS tak jde celej cluster do kytek
13:10 spito mornfall: neprošel test reachability
13:10 spito divine verify --report --reachability -w 1 --shared --property=assert --reduce=tau+,taustores,heap global-ok.bc
13:10 spito States-Visited: 46 expected, 59 got
13:10 spito ale to vypadá, že to je v pořádku
13:14 spito neprošly testy nejen reachability :)
13:14 spito patche pošlu cca za 2,5 hodiny
14:17 mornfall jo no, ty testy jsem rozbil tím že jsem opravil tau redukci :)
15:10 SirGlorg joined #divine
15:13 SirGlorg Mornfall: Privadi me k vam diplomka :) potkali sme se na nekolika sezenich v labu cca 1.5 roku z5 a od ty doby me to nepustilo. Mam s tim trochu problemy, tak mi Jirik dal odkaz na tenhle chat abych vas moh potesit svou pritomnosti
15:16 SirGlorg ted treba potrebuju ve visitoru vynechat store stavu (uchovat ho jenom nekdy) ale hloupe vynechani store().store( _to, hint); a nahrazeni za fetch nepomaha a segfaultuje mi to.
15:22 mornfall tak, logika věci praví, že pokud to v tom store není a ty uděláš fetch tak dostaneš neplatný výsledek a ten moc nejde dereferencovat
15:22 mornfall ergo, segv
15:23 SirGlorg jo aha, to funguje takhle :D
15:23 mornfall btw. tohle by ti řeklo třeba gdb
15:23 mornfall jak sis představoval že funguje fetch?
15:24 SirGlorg dost nelogicky, cekal sem ze vrati nakej naslednej stav. Moc mi neni jasny, kde se generuje ten 'on the fly' prechod, takze sem mel za to, ze to ten store umi natahnout.
15:25 mornfall visitor.h:131 -- processOpen
15:26 mornfall datastruct.h:32 -- g.successors( ... )
15:26 mornfall edge se volá s už vygenerovaným stavem, store jej pouze deduplikuje
15:27 mornfall bbl jdu cvičit
15:27 SirGlorg diky, ja du za 20 min
16:13 mornfall kde se fláká ten spito
16:34 spito joined #divine
16:40 * spito jel ve vlaku
16:40 spito pak jsem doprovodil domů kamarádku, co byla rok v číně
16:40 spito no a teď jsme doma
16:41 spito *jsem
16:42 mornfall 14:02 ( spito ) ještě před odpolední kávou
16:42 mornfall :-P
16:47 spito no, to jsem to zkusil přeložit
16:47 spito pak se to kompilovalo
16:47 spito jo a to neznáš moji máti
16:47 spito není možné odejít od odpolední kávy
16:50 spito pačé
16:54 xstill super, když v ISu člověk zpopíruje soubor tak ten soubor patří původnímu majiteli...
17:03 mornfall spito: co to bylo s tím čítačem v owcty na nule?
17:11 spito no, to byl ten predCount
17:11 spito aspoň tuchám
17:11 mornfall xstill: to info.sh ti moc nefunguje :-) + divine compile --llvm llvm_examples/anderson.c -O0 -g -Wall -Wno-unused -Wno-sign-compare --precompiled=.
17:11 mornfall unknown option -O0. Context:
17:12 xstill wtf
17:12 mornfall xstill: počítáš s tím že CFLAGS je prázdný v prostředí
17:12 mornfall to je odvážný předpoklad :-)
17:12 xstill ... :-)
17:17 xstill opravíš to nebo to mám udělat?
17:29 mornfall můžeš ty :)
17:30 mornfall spito: ach ten angličtin :-P
17:35 spito mornfall: líp bych to nenazval
17:36 xstill to jsem nevěděl že Enrico ještě wibble vyvíjí
17:37 mornfall no, on mi psal že se chystá freeze v Debianu a že by bylo dobrý to zmergovat
17:37 mornfall tak jsem to zmergoval :-)
17:38 xstill a to už ho Spito skoro dohnal v počtu patchů...
17:38 mornfall tak nemůže to mít tak jednoduchý ne? :-)
17:38 mornfall ať se snaží
17:39 mornfall spito: tak, i když pominu větnou stavbu, tak chybí člen a barrier se píše se dvěma r
17:39 mornfall make become by se spíš řeklo turn into
17:44 spito mě se ta bariéra nezdála
17:44 spito *mně
17:44 spito fuj ale
17:46 mornfall :-))))
17:50 xstill mornfall: +                std::cerr << "queued " << this->graph().showNode( st.node() ) << std::endl;
17:51 xstill tohle jsi asi v mainline nechtěl...
17:51 mornfall meh
17:51 mornfall to jsem fakt nechtěl no :-)
18:09 xstill super
18:09 xstill ../divine/libdivine-instances.a(instance-1.cpp.o): In function `divine::llvm::BitCode::BitCode(std::string)':
18:09 xstill /home/xstill/DiVinE/mainline_mirror/divine/llvm/interpreter.h:58: undefined reference to `llvm::ParseBitcodeFile(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*)'
18:11 xstill jakto, že to nestačí linkovat s libdivine?
18:13 xstill příde mi trochu úchylné likovat llvm i k libdivine-instances
18:13 xstill (ne že by to pomohlo :-D)
18:14 xstill blbej linker
18:21 mornfall libdivine je slinkovanej s LLVM_LIBRARIES
18:21 mornfall „slinkovanej“ (to si cmake jen poznačí, .a nejde reálně s něčím linkovat)
18:23 xstill nechápu to: platí, že pokud se libdivine-instances nachází v ld příkazu před llvm knihovnama, tak by mu měli resolvovat symboly?
18:23 mornfall to nevim, ale přidal bych tam target_link_libraries( libdivine-instances libdivine )
18:25 xstill hm, ani to nepomohlo
18:51 xstill spito: jak jsi udělal tu úlohu na openmp?
18:55 xstill mě příjde že tam ty reduce nejde využít...
19:07 spito openmp jsem udělal pomocí #pragma omp for
19:07 spito xstill: ...^
19:07 spito ještě musím říct, aby se to spustilo 12x
19:07 spito jak je v zadání
19:08 xstill hm, a cyklil jsi přes 0..11? Použil jsi reduce?
19:09 xstill protože já mám parallel blok normální a nedostanu z toho na kterém vlákně to min/max je
19:09 xstill a vůbec ta úloha je divná
19:51 spito xstill: no, pokud to můžu udělat takhle jednoduše, tak to udělám
19:52 spito jo a stejnojmenný adresář je se stejnou příponou, nebo ne? :D
19:52 spito tedy má se ten adresář uvnitř jmenovat *.tar.gz nebo jenom *?
19:52 xstill adresáře přípony nemívají obvykle
19:56 xstill použil jsi teda reduce klauzuli?
19:59 spito ne,
19:59 spito to není v zadání
20:00 xstill není
20:00 xstill právě, že mě příjde, že to použít nejde
20:00 xstill v mpi to jde
20:00 xstill i když je to dost úchylný
20:01 xstill co jsi řekl tomu foru aby proběhl 12x?
20:06 xstill to je veselý nm ten symbol nevidí v llvm knihovnách
20:24 spito xstill: no, já mám hlavně funkci na výpis dat z vektoru
20:24 spito takže mě všechno nablije data do vektoru
20:24 spito a to se pak jednotně zpracuje
20:24 xstill :-D
20:37 spito omp_set_dynamic( 0 );
20:37 spito #pragma omp parallel for num_threads(12)
20:49 spito xstill: a opravdu se tak stane
20:52 xstill jo, no zítra to dodělám a odevzdám konečně
20:52 xstill dík
20:54 spito jak ověřím, že tar.gz je opravdu to, co chci, aby to bylo?
20:55 spito (málem jsem napsal "chcy" :D )
20:56 xstill tar xzvf file.tar.gz
20:56 xstill ti to musí rozbalit
21:02 mornfall spito: všechno tě nablije? :)
21:02 spito máme poslat mail?
21:02 spito mornfall: jistě
21:03 spito mornfall: a ano, tato chyba se mi stává velmi zřídka každou hodinu
21:11 * spito jde spát, opět
21:12 spito ...opět dneska nic neudělal
21:12 spito (kupovat si nový telefon je blbý, zvlášť v semestru, člověk si s ním pak pořád hraje)
21:38 spito left #divine

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