/srv/irclogs.ubuntu.com/2013/05/30/#ubuntu-mir.txt

racarrwell00:00
racarrfcntl(O_NONBLOCK...blabla00:00
racarrcant fail immediately after socketpair suceeds00:00
racarrso this must be from the second InputChannel constructor...due to an architectural bug now we00:00
racarrend up creating two input channels00:00
racarrat different times00:00
racarrso there is a race between the first one closing and the second one being created00:00
kdub_tricky00:00
racarrthat...could happen *thinks*00:00
racarrYes could happen!00:00
racarrIt is either fixed in rebuild-input-targeting00:01
racarr*thinks*00:01
thomisounds likely, given that this is multi-threaded test00:01
racarrok it's very possible00:01
racarrit's fixed in rebuild-input-targeting00:01
thomiit's easy enough to reproduce, anyway00:01
racarrif not it will definitely be fixed in this follow up branch I was planning on doing to get rid of the duplicate InputChannels00:01
thomiracarr: that an unmerged branch?00:01
racarryes00:01
racarrso I can fix it tomorrow00:01
thomiok00:02
thomiIn the mean time, I'll just disable input, and move on to rendering stuff00:02
racarryou mean finding the next bug ;)00:03
racarrI just found a race in surface states that can end up hosing the socket session XD00:04
thomiyeah :)00:04
racarrOk client-focus-notifications is mostly finished I just need to rework some of the SessionMediator test fixtures.00:09
racarrI'm also thinking a lot about input acceptance tests...00:09
racarrit's frustratingly difficult to express really simple scenarios like00:10
racarrone client opens, another client opens, once the second client has opened we send some input, then the second client closes and we send some more input to see that the first client gets it00:10
racarrbecomes a strange excercise in interprocess expectation synchronization every time00:11
racarrso I am trying to come up with...a better fixture, because there are a good dozen (easily) meaningful input acceptance tests that we could put in place00:11
racarrThis focus notification test fixture comes closer to it but not quite00:12
racarrHowever. This day is already an hour too long and I want to go rock climbing before I get evening sleepy00:12
racarrso bye for now, will try and come back to finish off and submit client-focus-notifications :)00:12
RAOFToday the part of Chris will be played by a sleep-deprived misanthrope.00:45
robert_ancellRAOF, did you do that work on lightdm set defaults? I can do it now if you want01:47
RAOFrobert_ancell: I have not done that yet, thanks.01:49
robert_ancellRAOF, there, it will cost you a review :) https://code.launchpad.net/~robert-ancell/lightdm/set-defaults-seat-type/+merge/16642002:02
RAOFrobert_ancell: That's probably a one-approve-to-merge review, right?02:10
robert_ancellpretty much02:11
robert_ancellnormally with lightdm it's a zero-approve-to-merge :)02:11
RAOFHah. I can't approve it anyway :)02:13
robert_ancellthomi, hmm, what's the CI complaining about here? https://jenkins.qa.ubuntu.com/job/lightdm-raring-amd64-ci/29/console02:24
robert_ancellLooks like it might be trying to merge in the packaging twice?02:24
* thomi looks02:24
thomithat does look borked. just checking the job config02:25
thomirobert_ancell: problem was a config error in the cupstream tool. Have manually edited jenkins config, and re-run that CI job again. Will propose the fix for the config, so Francis can merge it & re-deploy jenkins jobs tomorrow02:31
robert_ancellthomi, ok, thanks!02:31
thomino worries02:31
thomirobert_ancell: also, lightdm & unity-system-compositor are now being dput'd to the ppa after every mir build02:34
robert_ancellyay!02:39
robert_ancellthomi, hmm, autolanding now failing? https://code.launchpad.net/~robert-ancell/lightdm/set-defaults-seat-type/+merge/16642002:55
thomirobert_ancell: interesting failure :-/02:57
robert_ancellRAOF, does this look correct? https://code.launchpad.net/~robert-ancell/mir/revert-drm-auth-magic-removal/+merge/16643203:52
RAOFrobert_ancell: Yes.03:56
robert_ancellRAOF, I don't get the --trees arg to bzr init-repo - do you use it?04:21
RAOFrobert_ancell: You mean --no-trees? No, I don't.04:22
robert_ancellRAOF, according to http://wiki.bazaar.canonical.com/SharedRepositoryTutorial --no-trees is the default I think04:22
RAOFBut that's because I want a working tree for my branches. If I were just serving branches out over ssh I'd want --no-trees.04:23
robert_ancellworking tree = directory with files in it to edit/build?04:23
RAOFRight.04:24
robert_ancellhmm, looks like --trees is the default when trying all cases04:24
RAOF--no-trees is very similar to git's branches, except they're non-hidden directories rather than files in a hidden directory.04:24
RAOFYeah, --trees is totally the default.04:24
robert_ancelloh, --no-trees means "all branches in one directory"?04:25
RAOFNo, it means ‘just the branch metadata in the directory’04:35
RAOFYou can turn this into “all branches (effectively) in one working tree” by use of lightweight checkouts and swiching.04:37
thomirobert_ancell: that lightdm issue seems to be fixed. In the end it was related to the MBS rebuild changes we made04:59
RAOFTIL that “auto fn(int foo) -> int { return foo; }” is a valid C++11 function definition.06:14
RAOFFor all the functional programming immigrants, I guess :)06:15
tvossRAOF, +1 :)07:20
alan_galf__: can you check https://code.launchpad.net/~robertcarr/mir/rebuild-input-targeting/+merge/165712 - the more eyes the better for this one08:13
alan_ghikiko: ping08:17
hikikoalan_g, :)08:24
hikikohi08:24
hikikoI just merged your branch08:24
hikikoI thought approving is enough for jenkins to merge it :/ sorry :)08:25
alan_ghikiko: Only to trunk - your branch is your own. ;)08:36
alf__alan_g: @rebuild-input-targeting, sure, @customisable-DefaultFramebufferFactory, I think jenkins is having network problems, and is scheduled to shut down, so autolanding will probably fail again :/08:49
alan_galf__: ack (otp)08:51
=== pete-woods1 is now known as pete-woods
=== alan_g is now known as alan_g|tea
=== alan_g|tea is now known as alan_g
=== mmrazik is now known as mmrazik|afk
=== mmrazik|afk is now known as mmrazik
racarrMorning14:52
alf__racarr: hi!14:54
alf__racarr: heads up: jenkins is offline14:54
alf__racarr: actually it is online now but network is problematic14:54
racarr:(14:57
kgunnracarr: mornin'14:57
kgunnracarr: i noticed the the platform-api bulk changes got merged14:58
alan_gAfternoon14:59
kdub_status,  dreaming up ways to break my swapper switcher... might put it in  pre-review now just to get some air on the MP15:03
racarrkgunn: Cool ill update my branch today15:07
racarrugh15:08
racarr3 days of climbing in a row -> painful typing15:08
kgunnrocks?15:08
racarrhttps://code.launchpad.net/~robertcarr/mir/client-focus-notifications/+merge/166440 exist15:10
racarrkgunn: Fake rocks. I found a climbing gym like 3 blocks away15:11
kgunncool15:11
racarrIt's pretty fun as a form of excercise, they make little "puzzles"15:11
racarrwhere you can only climb using holds of certain colors, etc, and have to get from one point to another15:11
racarrand some of it is just strength/flexibility15:12
racarrbut the puzzles also have solutions...like "Oh I have to use this funny reach with my right hand to get this hold from underneath then its easy!"15:12
racarr*babble*15:12
racarrFun stuff15:12
kgunnracarr: i like stuff like that15:25
racarr:)15:26
alf__racarr: rock climbing is great, I used to do a lot outside on real rock when I was younger. Advice: don't over-do it, especially in the beginning. Muscles can get into shape much faster than tendons etc, so you start feeling stronger and want more, but it's easy to get strain injuries (e.g. tendonitis).15:47
racarralf__: Ah. That's good advice15:51
racarrThanks :)15:52
racarrkatie: I am ok for our meeting today but could be 1-2 minute late if the line at the coffee shop is long15:52
racarrbrb15:52
racarrback16:02
katieracarr, ok16:03
katieracarr, i was a bit late too!16:03
=== mmrazik is now known as mmrazik|afk
alan_gkdub_: ping16:27
kdub_alan_g, pong16:28
=== greyback is now known as greyback|food
=== alan_g is now known as alan_g|life
racarrMet with katie. Worked through some of the details for the tiled surface state (various maximized states). Talked about how minimized isn't really a state (i.e. a minimized window still shows in the maximized state it was in in the alt tab preview), it's just hidden16:59
racarrRealized that the snapping constraints (i.e. anchoring) for the tiled state already apply to all windows16:59
racarrso really the tiled state just means it had a previous floating size that it will be restored to when untiled16:59
racarrWe also talked about calling Surface States17:00
racarrSurface Modes to be more explicit17:00
racarrbecause it's unclear, why (for example)17:00
racarrfocus isn't a surface state17:00
racarri.e. if you asked someone who hadn't read the design documents, talk about the state of this surface17:01
=== greyback|food is now known as greyback
racarrSorry internet failure!17:20
racarrend of sentence: "Talk about the state of this surface" the first things that come to mind are like17:21
racarroh it's open, it's on top, it has keyboard focus, it has this size17:21
racarrnot necessarily, "Vertically maximized"17:21
racarrwhat's going on with https://bugs.launchpad.net/mir/+bug/118332717:26
ubot5Launchpad bug 1183327 in Mir "Stress tests cause server to crash" [Medium,Fix committed]17:26
racarrI thought we determined last night it was in the input channel stuf then as I was going to sleep got some email about17:26
racarra bug being assigned to me17:26
racarrand now I can't find it17:26
racarrhttps://bugs.launchpad.net/mir/+bug/1185589 :)17:30
ubot5Launchpad bug 1185589 in Mir "Mir server crahes when allocating & freeing surfaces from multiple threads" [High,Triaged]17:30
greybackracarr: agreed that minimized is more a flag on a surface. We want to maintain the surface geometry while minimized so it restores correctly17:30
racarrgreyback: Mm.17:32
greybackracarr: could minimized be considered a special tiled state (i.e. docked to nothing)?17:34
racarrgreyback: That's what I was just thinking :)17:36
racarrit has most in common with the tiled states, i.e. it snaps back17:36
greybackyep17:36
racarrbut I think. actually with minimized it might be easier to just model it17:36
racarrseperately17:36
racarri.e. rather than maintain/restore the geometry17:37
racarrthe surface never goes anywhere (there is no meaningful minimized geometry change imo...)17:37
racarrso we just say it17:37
racarr's hidden17:37
greybackthat is probably easier17:37
racarrSomething I have started to think about lately17:37
racarrwith surface types/roles and surface states/modes17:37
racarris that tight coupling shows up the same way it does in code17:38
racarrin "design languages"17:38
racarrwell, not exactly the same way XD17:39
racarrbut I think in general, rather than try and do the programmer thing (i.e. look for grand abstractions over the various design patterns)17:39
racarrthere is value to modelling the concepts seperately and more explicitly, even when they can be grouped17:40
racarrbecause then we end up with more "interchangeable concepts" XD17:40
racarrwhich is part of the difficulty, in trying to make the same words about surface management17:40
racarrapply to the phone/tablet/desktop17:40
greybackTrue that.17:41
greybackwell having not done a display manager/window manager before, I'm not sure what's the best approach. I guess start simple :)17:44
racarrdon't worry having done a window manager before im pretty sure all it did was fill me with lots of really strong opinions that have nothing to do with reality :p17:46
greyback:D17:48
racarrMerging rebuild-input-targeting17:50
racarrTook down my computer with the stress test lol17:56
racarrOh I see17:58
racarrinput_registrar->input_surface_opened needs to be inside17:58
racarrthe lock_guard in ms::SurfaceStack::create_surface17:58
racarrbut i wanted to merge the input_registrar and the input_factory anyway so might take the time to fix it that way17:59
racarrthe race is the surface is destroyed  inbetween the call to surfaces.push_back(surface) and the input registration17:59
racarrcausing the input registration to fail on the closed fd17:59
racarrshouldn't locking higher up solve this?17:59
racarrthis means that mf::SessionMediator::destroy_surface is being called from another thread before18:00
racarrmf::SessionMediator::create_surface ever returns.18:00
racarrIt seems like we should lock the SessionMediator right, to guarantee18:00
racarrin order processing of messages18:00
racarrdoes that even guarantee that18:00
racarrno lol18:01
racarrInbetween reading the event and calling the appropriate method on the SessionMediator18:01
racarranother thread could read another message (true? y/n...I believe y)18:02
racarrlocking the session mediator, and handling messages out of order again18:02
racarrlocking the session mediator seems kind of reasonable though18:02
racarror is all this impossible18:08
racarrbecause how does the client cause destroy_surface to be called until it has replied to18:08
racarruntil it has received a response to*18:08
racarrcreate_surface18:08
racarrhmm hmm hmm18:09
racarrCould the IDs be getting mixed up somehow18:10
racarroh man18:11
racarrI can use an lttng trace18:11
racarrto see what is happening18:11
racarr:O18:11
racarrtrying to use lttv but its not working :(18:20
racarrall the messages look in a sensible order18:24
racarrgoing to "fix" thi scenario even though I cant understand how it would happen and see if another bug exhibits18:25
racarrIt does by locking up my system :)18:31
racarrperhaps a race in the communicator with assosciating the mediator...18:37
racarrAlmost sure this is two races...or like a race and a memory error...or...18:50
=== greyback is now known as greyback|away
racarrI ruled out everything I could think of that wasnt memory corruption19:10
racarrthen I tried to run mir demo server (without even the stress tests) nder electric-fence19:10
racarrand it hung my entire system19:10
racarrso i had to reboot and then i tried again19:10
racarrwith the same results XD19:10
racarrok whatever is going on. it seems to maybe not actually have to do with the race in this dual input hcannel creation19:12
racarrbut that's still a weird issue that can be solved by deleting code (After redoing some interfaces)19:12
racarrso going to spend some time on that, and then see how this stress test issue remanifests19:13
racarrlunch19:45
racarrback :)20:07
racarrI am not friends with this bug20:51
racarractually right now I am not friends with the difficulty of debugging and frequency of system restarts required20:51
racarrthe bug is kinda neat20:51
=== greyback|away is now known as greyback
racarrInteresting21:02
racarrI moved it to an exception from the InputRegistrar21:02
racarrrequesting window handle for an unregistered surface21:02
racarrI can't make gdb work without hanging my system -.-21:02
kgunnrobert_ancell: so i was reading this21:09
kgunnhttp://blog.mecheye.net/2012/06/the-linux-graphics-stack/#rendering-stack21:09
kgunnwhich was stellar btw...21:10
kgunnbut he said "With the new dumb ioctls in place, it is recommended to use those and not libkms."21:10
kgunnare the "dumb ioctls" still considred kms ?21:11
robert_ancellnot sure21:13
robert_ancellkgunn, asking in #phablet, they do expect to use the whole lightdm/unity-system-compositor/unity-greeter/unity stack for the phone - does that match your expectations?21:14
thomimorning all21:15
robert_ancellracarr, ping21:15
racarrrobert_ancell: Pong!21:15
robert_ancellracarr, hangout?21:15
* kgunn reading the #phablet scrollback21:16
kgunnrobert_ancell: yes...matches my expectation21:20
robert_ancellkgunn, no, I just wasn't sure that was what they'd decided on21:21
robert_ancellthomi, do you know why mesa is -jenkins71 for raring and -jenkins1 for saucy in https://launchpad.net/~mir-team/+archive/staging/+packages?22:07
* thomi looks22:07
robert_ancellIt causes apt to downgrade the packages from raring->saucy, which I *think* is fine22:08
thomirobert_ancell: yeah, it's because each series is controlled by a separate jenkins job, and it's the jenkins job build number that's used in the package version number22:09
thomirobert_ancell: It was uploaded on the same date though, so I'm 99% sure it's the same package contents22:09
robert_ancellany way to manually bump the number up so they match?22:09
thomiI may be able to finesse the numbers in the jenkins job, let me take a look22:10
robert_ancellalso, any chance of getting jenkins to build xorg like it is for mesa?22:10
thomirobert_ancell: ok, I've patched the build script, so it will shortly upload a new -jenkins71 package for saucy. However, it's kind of fragile. As soon as the build for one series passes and the other series fail the versions will get out of sync again22:14
thomibut at least people upgrading from raring->saucy won't get their mesa downgraded anymore22:14
thomirobert_ancell: how is xorg currently built?22:14
=== greyback is now known as greyback|away
thomirobert_ancell: it looks like RAOF manually dputs it?22:15
robert_ancellthomi, yes, I think so22:17
robert_ancellthomi, will the same out-of-sync problem happen for the other jobs?22:17
thomirobert_ancell: no, these jobs are special since we're not using the autolanding infrastructure, since the source is external22:18
thomii.e.- github22:18
robert_ancellyeah22:19
thomiif launchpad still mirrored git repos :)22:19
robert_ancelloh, it stopped doing that?22:19
racarrthomi: Can you trigger the crash with the stress test22:38
racarrand input on22:38
racarreven if you don't22:38
racarrmove the cursor at all22:38
racarrI think I might have fixed part of it?22:38
thomiracarr: in mir trunk?22:39
racarrSure22:39
racarrnow if I don't thrash the cursor its all fine22:39
racarrif I thrash the cursor22:39
racarrim not actually sure that its not a deadlock22:39
racarrinstead of a crash22:39
racarrbecause im never able to interact with my system again without rebooting22:39
racarrXD22:39
thomiracarr: I never touch teh cursor22:39
racarrhmm22:39
thomiracarr: in fact, moving the cursor on my laptop doesn't move the arror in mir_demo_server... is it supposed to?22:40
racarrwell I think that part of it I found then, and there is another part...when you thrash the cursor over thrashing clients22:40
racarrthomi: If you have permissions on /dev/input*22:40
racarrinput/*22:40
thomiracarr: I see.22:41
thomiracarr: the server no longer crashes, but it still has problems. It seems to get in a state where some call the client is making blocks forever, and the client prints out:22:46
thomiERROR: Invocation failed: id: 0 method_name: connect error: Broken pipe22:46
thomiERROR: Header receipt failed:  error: End of file22:46
thomiright before hanging22:46
racarrthat's possible22:47
racarrim a few fixes ahead of trunk atm in my branch22:47
racarr"fixes"22:47
racarrI do n't know which of the three "races" I fixed22:47
thomiracarr: heh, ok22:47
racarrstopped the problem yet XD22:47
thomiracarr: if you put your branch somewhere publci I can run the tests for you.. in about 10 minutes time22:48
racarroh23:01
racarrI think I found the deadlock23:01
racarra deadlock23:01
racarr...is thi going to come down to moving one line :(23:02
racarrwell and adding another one somewhere else23:02
racarrwe should install a kill handler23:03
racarrall the way down in the input stack so as long as the InputReader thread is running23:03
racarreven if the SurfaceStack is deadlocked23:03
racarryou can kill mir23:03
racarrhmm no hard to solve the lock23:05
robert_ancellracarr, well, the kill handler should be in the shell23:05
racarrrobert_ancell: but I mean it should be installed lower than EventFilter23:05
racarrwhich is the only mechanism we provide now23:05
robert_ancellwhy not do it in the event filter?23:05
racarrbecause the EventFilter is run from the dispatcher thread23:06
racarrand interacts with all the other threads23:06
robert_ancellthen don't deadlock that one :)23:06
racarrwell, ideally right.23:06
racarr;)23:06
kdub_we need a cleanup tuesday again23:16
racarrkdub_: Yes!23:17
kdub_racarr, i went to add a function to the surface, and found that i want to cleanup these interfaces a bit while i'm here :)23:18
racarrdo it :) it needsss it23:23
racarrHey!23:26
racarrI really fixed it that time23:26
racarrEither that or I am having an extraordinary run of race condition luck23:26
racarrthat would be cruel23:26
racarrthe final dead lock was between the input registrar the dispatcher and the surface stack23:27
racarrI think it's resolved but it changed what was a really simple (albeit not working) locking pattern23:27
racarrin to...a locking dance23:27
racarrwhich is never a nice thing to maintain23:27
racarrso I need to think about it more23:27

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!