User:Which Linden/Office Hours/2009 Sep 10

From Second Life Wiki
Jump to: navigation, search
  • [11:01] Saijanai Kuhn: hey Which, yer doomed
  • [11:02] Which Linden: doooooooooomed or just doomed?
  • [11:02] Morgaine Dinova: waters the flower pot
  • [11:02] Latif Khalifa: heya Which
  • [11:02] Morgaine Dinova: Hiya Which :-)
  • [11:02] Which Linden: good morning!
  • [11:02] ATechwolf Foxclaw: waters the plant.
  • [11:02] Which Linden: "watering the plant" is the new "kissing the ring" :-P
  • [11:03] Latif Khalifa: lol
  • [11:03] ATechwolf Foxclaw: Depends on how one waters the plant. :-D
  • [11:03] Latif Khalifa: Don Which de Lindedn :P
  • [11:03] Which Linden: so hey, I'd like to try something today if you all are up for it
  • [11:03] Morgaine Dinova: Which, we've been discussing for a couple of hours in Groupies a scheme for preserving creator metadata and object authenticity in XML dumps of objects made by viewers. This is named the "Nyx Object Authenticity proposal".
  • [11:03] Saijanai Kuhn: wassup?
  • [11:04] Which Linden: how would you feel about collaboratively debugging SVC-4182, since it's a viewer issue?
  • [11:04] Latif Khalifa: Listens to WHich's experiment proposal
  • [11:04] Morgaine Dinova: Sure, what's on your mind Which?
  • [11:04] Aimee Trescothick: "Does it look like a tiny robot?" ... yes ... "then it's authentic"
  • [11:04] ATechwolf Foxclaw: surl please.
  • [11:04] ATechwolf Foxclaw: url that is
  • [11:05] Which Linden: copy and paste ain't workin for me for some reason
  • [11:05] Aimee Trescothick: [1]
  • [11:05] Morgaine Dinova: Ta Aimee :-)
  • [11:05] Which Linden: thanks!
  • [11:05] Aimee Trescothick:  :)
  • [11:05] Which Linden: and by debug I don't mean actually debug, because we don't have a repro
  • [11:05] Which Linden: but just look through the source and identify possible reasons that the duplicates might be happening
  • [11:06] Which Linden: sorry if you were hoping to continue discussing the licensing thing; I know it's rare that I have a topic of my own :-)
  • [11:06] Morgaine Dinova: No no, go with yours please :-))))
  • [11:07] ATechwolf Foxclaw: First thing I do is grep the source to find otu there the logging info is comming from and backtrance from there on.
  • [11:07] Which Linden: yes, that's a good start
  • [11:08] Which Linden: should we do our source spelunking on snowglobe? seems likely to also contain whatever bug it is
  • [11:08] Which Linden: https://svn.secondlife.com/svn/linden/projects/2009/snowglobe/trunk
  • [11:08] ATechwolf Foxclaw: I am familar with the pie menu and mouse hover as they both get pay/buy info. I was playing with beacons last month.
  • [11:08] Which Linden: oh now paste works
  • [11:09] Morgaine Dinova: There does seem to be a random function associated with paste, I've noticed on Linux. Sometimes it just won't, no matter what you do with the clipboard.
  • [11:10] Morgaine Dinova: In the viewer I mean.
  • [11:10] Morgaine Dinova: grabs Snowglobe 1.2.0 source.
  • [11:10] Which Linden: so the debug message that's printed twice is printed from here: [2]
  • [11:12] Which Linden: so we know that the problem is that give_money is being called twice
  • [11:12] ATechwolf Foxclaw: case CLICK_ACTION_PAY:
  • handle_give_money_dialog();
  • [11:13] Latif Khalifa: this is reported only when paying objects?
  • [11:13] Twisted Laws: maybe the message isn't ack'd in time and its resent and this isn't called twice
  • [11:13] Which Linden: Latif: no it's reported when paying agents too
  • [11:13] Twisted Laws:  ?
  • [11:13] Which Linden: well I think so; the give_money function works with both
  • [11:14] ATechwolf Foxclaw: llviewermenu.cpp handle that function.
  • [11:14] Which Linden: Twisted: I don't think it's related to the message system directly, but yeah, maybe something that calls give_money gets two packets and does two actions
  • [11:14] Which Linden: grepping through the source I see lots of function pointers
  • [11:14] Which Linden: [3]
  • [11:15] ATechwolf Foxclaw: llviewermenu is huge.
  • [11:15] Which Linden: that's handle_give_money_dialog, and it wraps up a pointer to complete_give_money
  • [11:15] Latif Khalifa: it's unlikely message system since each packet has a serial and repeated serial numbers are discarded
  • [11:15] Which Linden: Latif: good point
  • [11:15] Which Linden: so maybe it's a UI race condition?
  • [11:15] Latif Khalifa: and the log indicates function called twice
  • [11:16] Latif Khalifa: yeah, my guess is ui problem
  • [11:16] Latif Khalifa: i'd focus on fast pay floater
  • [11:16] Which Linden: I think that floater is LLFloaterPay
  • [11:17] Latif Khalifa: kind of difficult to debug stuff on no build/no script land
  • [11:17] Which Linden: oh...want me to turn those on?
  • [11:17] Latif Khalifa: could you please
  • [11:17] Which Linden: done
  • [11:17] Saijanai Kuhn: could give Gfoupies building rights
  • [11:17] Object: Hello,: Avatar!
  • [11:17] ATechwolf Foxclaw: I foudn the function "llgivemoney.cpp:void LLFloaterPay::payViaObject(money_callback callback, const LLUUID& object_id)
  • [11:18] Aimee Trescothick: yeah, there's payDirectly and payViaObject I see
  • [11:18] ATechwolf Foxclaw: payDirectly is to an avatar, and pay viaobject is to object.
  • [11:19] ATechwolf Foxclaw: llviwermenu is where it desides what funciton to use.
  • [11:19] Which Linden: so it looks like the way those work is.... they get called, stick up their floater UI, and call their callback when the user decides what to do with the UI
  • [11:19] Object: Hello,: Avatar!
  • [11:19] Which Linden: and the callback is give_money, so if somehow the UI was screwing up such that it called teh callback twice.... boom
  • [11:20] ATechwolf Foxclaw: llviewermenu complete_give_money is where it desides what funciton to use, direct or objectpay.
  • [11:20] Which Linden: here's the definition for LLFloaterPay: [4]
  • [11:22] Which Linden: so from the bug reports we only know the bug happens when paying via object
  • [11:22] Which Linden: so let's focus on that code path
  • [11:22] Which Linden: (let me know if I'm reading that wrong)
  • [11:22] Latif Khalifa: i had that reported by my customers as well
  • [11:23] Latif Khalifa: and i use money() event in my vendors scripts
  • [11:24] ATechwolf Foxclaw: It may be a hack, but would adding code to prevent another money event withen xx time help stop all the double pay stuff?
  • [11:24] Which Linden: yes but it would actually probably be harder to implement than finding and fixing the bug :-)
  • [11:24] Which Linden: implement correctly that is
  • [11:25] Which Linden: so the other clue we have is that the *second* give_money call somehow fails to send a description to the simulator
  • [11:25] Which Linden: and presumably that's how the money() event doesn't get called a second time
  • [11:25] Morgaine Dinova: Highlighting multiple payments within a short time window in the log is worth doing though, whether or not bug is fixed. It could recur.
  • [11:26] Which Linden: surely
  • [11:26] Which Linden: we should get processes in place to check on that
  • [11:26] Which Linden: unfortunately there is a lot of legit traffic that would show up as noise; zyngo comes to mind
  • [11:27] Latif Khalifa: Which, are you sure money() does not get called twice?
  • [11:27] Which Linden: seem to be a lot of games whose basic mechanic involves ping-ponging 1 L$ back and forth between player and game
  • [11:27] Morgaine Dinova: What's the timestamp granularity? Are these doubles at the SAME time, or just very close together?
  • [11:27] Which Linden: Latif: no, I just assume so
  • [11:27] Which Linden: Morgaine: we only have second granularity
  • [11:27] Morgaine Dinova: Hmmm
  • [11:28] Which Linden: well actually I can get better than that, lemme do that for ya
  • [11:28] Latif Khalifa: Which, i recall seeing some transactions in my store, getting payed twice for a copy item, and item gets deliver twice and me wondering why the heck are they buying it twice when is copiable
  • [11:28] Morgaine Dinova: Latif: altruism :P
  • [11:28] Latif Khalifa: hehe
  • [11:29] Which Linden: Latif: really, that's interesting
  • [11:29] Which Linden: Might not be the same bug, though
  • [11:30] Which Linden: If you notice that again, look at the logs and if the second transaction has no description, then that's da bug
  • [11:31] Latif Khalifa: trying to trick fast pay with double clicks and what no
  • [11:32] Which Linden: oh god I'm sure there's some recipe out there for "free lindens if you input this code"
  • [11:32] Morgaine Dinova: Shhhhhh
  • [11:32] Aimee Trescothick: oooooh, weird
  • [11:34] Which Linden: ugh ok we don't have finer time resolution
  • [11:34] Morgaine Dinova: Eeek
  • [11:35] Aimee Trescothick: notice anything funny in this screenshot?!
  • [11:35] Aimee Trescothick: beside the fact it's not rezzing properly for me :S
  • [11:35] Which Linden: texture downloading is slow as all hell?
  • [11:35] Morgaine Dinova: Not rezzed yet
  • [11:35] Which Linden: ha ha ha
  • [11:36] Aimee Trescothick: that's the result of clicking rapidly on the pay button
  • [11:36] Aimee Trescothick: I've been left with a Pay floater, with just a cancel button
  • [11:37] Which Linden: Oh I see it now, right above the prim
  • [11:37] Aimee Trescothick: so definitely something going awry with the UI
  • [11:37] Aimee Trescothick: even if that's not the particular bug we're looking for
  • [11:37] Aimee Trescothick: yeah
  • [11:38] Which Linden: nice find!
  • [11:38] Latif Khalifa: Aimee, at firt I thought you stole my screen lol
  • [11:38] Aimee Trescothick: bet I can't replicate it now though lol
  • [11:38] Latif Khalifa: scary same layout lol
  • [11:38] Aimee Trescothick: lol
  • [11:38] Morgaine Dinova: 2-3 minutes at max bandwidth and still not rezzed
  • [11:38] Which Linden: great minds think alike ... :-)
  • [11:38] Latif Khalifa: same perspective focusing on a cube
  • [11:39] Twisted Laws: maybe the floater should close before it send the money?
  • [11:39] Twisted Laws: in void LLFloaterPay::onGive(void* data)
  • [11:39] Aimee Trescothick: hrm, think the screenshot got slammed to 512x256 because of my aspect ratio
  • [11:39] Twisted Laws: or disable itself anyway
  • [11:40] Ardy Lay: It's loaded, just still blurry and yeah, 512x256.
  • [11:40] Aimee Trescothick: should certainly disable all it's UI the moment anything in that window is committed I'd say
  • [11:40] Latif Khalifa: well if this has started appearaing since "the bestt viewer ever" aka 1.23 has been released, and it seems that it has, i'd go diffing changes in the related code
  • [11:40] Morgaine Dinova: It must be downloading all of Aimee's inventory .... still at max bandwidth :P
  • [11:40] Aimee Trescothick: yeah, could run back through the commits to llgivemoney.cpp
  • [11:40] Which Linden: yeah maybe; so LLFloaterPay::give is the one that fills in the description field
  • [11:40] Morgaine Dinova: I reckong this 1.2.0 Snowglobe has problems.
  • [11:41] Which Linden: 468 LLSelectNode* node = mObjectSelection->getFirstRootNode();
  • 469 std::string object_name;
  • 470 if (node)
  • 471 {
  • 472 object_name = node->mName;
  • 473 }
  • [11:41] Which Linden: so.... if object_name is empty, or it goes through some other branch, then the description would be empty
  • [11:41] Aimee Trescothick: AH!
  • [11:41] Which Linden: so I think it's reasonable to say that give() is being called twice as well
  • [11:41] Aimee Trescothick: think I know what may be happening
  • [11:42] Which Linden: do tell
  • [11:42] Which Linden:  :-)
  • [11:42] Aimee Trescothick: take your prim, click it like buggery
  • [11:42] Aimee Trescothick: get multiple floaterpays on top of each other
  • [11:43] Aimee Trescothick: click the first, it works and goes away
  • [11:43] Which Linden: starts a band called "click it like buggery"
  • [11:43] Latif Khalifa: ah, i have all may vendors set like this cube
  • [11:43] Ardy Lay: Ah... twitchy gamers finding bugs?
  • [11:43] Aimee Trescothick: but there's an identical one hiding behind it, so it looks like your click didn't work
  • [11:43] Latif Khalifa: its pay on click
  • [11:43] Aimee Trescothick: so you click again
  • [11:43] Morgaine Dinova: Oh joy, it's the new translator stuff that's filling the link ---> 2009-09-10T18:42:07Z INFO: getSize: Variable Language not in message ChatFromSimulator block ChatData (zillions of them)
  • [11:43] Latif Khalifa: so double clicl on object + double click on the pay button will do the trick
  • [11:43] Aimee Trescothick: on the second window
  • [11:44] Morgaine Dinova: Relogging to Techwolf's ebuild.
  • [11:44] Ardy Lay: Somepeople doubleclick on everything. I see this walking through offices.
  • [11:44] Latif Khalifa: i got the same log lol
  • [11:45] Tiny Blue: Kitty Head: All Go
  • [11:45] Aimee Trescothick: if I click three times on the object rapidly on the object, I get the proper floaterpay, with one behind it with just a cancel button
  • [11:45] Latif Khalifa: yeah i can repro that
  • [11:45] Aimee Trescothick: ah, sometimes just a cancel button, sometimes two full floaterpays with all their buttons
  • [11:46] Which Linden: hm....that sounds pretty broken
  • [11:46] Aimee Trescothick: yuck lol
  • [11:46] Aimee Trescothick: definitely should only be pulling up one floaterpay for one object at a time
  • [11:47] Aimee Trescothick: maybe even just one floaterpay at a time full-stop
  • [11:47] Which Linden: yeah....perhaps
  • [11:47] Aimee Trescothick: should be a singleton basically
  • [11:47] Latif Khalifa: when i rapidly click on my object, i get about 3 out of 10 without buttons
  • [11:47] Which Linden: I could see the use case for having multiples for different objects
  • [11:47] Aimee Trescothick: hmm, unless you want to shop and play zyngo at the same time I guess
  • [11:48] Aimee Trescothick: yeah, one per object then
  • [11:48] Latif Khalifa: hates artificial limitations like that
  • [11:48] Aimee Trescothick: heh
  • [11:49] Aimee Trescothick: or at least don't make them pop up in the same place
  • [11:49] Aimee Trescothick: tile them or something
  • [11:49] Latif Khalifa: I wonder if this could be a user error, double clicking on the object, then double clicking on the pay button, which would do what this bug describes nicely
  • [11:49] Aimee Trescothick: the actual problem (besides the broken ones missing their buttons) is that they appear to the user as being one
  • [11:49] Which Linden: could you explain how it would lead to the blank second description? that's still fuzzy for me
  • [11:50] Aimee Trescothick: hmm
  • [11:50] Latif Khalifa: Which, I would ask the Original Poster of that bug if his vendor's default action is set to pay
  • [11:50] Latif Khalifa: (or buy)
  • [11:50] Which Linden: what would that tell us?
  • [11:50] Aimee Trescothick: well there's clearly stuff going missing somewhere in that some of them are coming up with just a cancel button
  • [11:51] Which Linden: is ignorant of how vendors work
  • [11:51] ATechwolf Foxclaw: reads the scrollback
  • [11:51] ATechwolf Foxclaw: I do double clicks ALL the time due to SL not reacting to my first one.
  • [11:51] Latif Khalifa: Which, if the answer is "No" it would eliminate my theory of double click user error
  • [11:52] Which Linden: ah ok latif, that makes sense
  • [11:52] ATechwolf Foxclaw: right click, buy. Can't buy withen a second or two, cancell and try just clicking on the object. If not, try again and again untill you CAN buy the object.
  • [11:53] Which Linden: I think I see the chain now -- user double-clicks, kicks off two pay dialogs, each of which requests the object info; only one of them wins the race to set _PREHASH_PayPriceReply handler, and thus only one of them has a description
  • [11:54] Latif Khalifa: Which, rez that one and click twice on it, then double click $L1 on the dialog
  • [11:54] Which Linden: but these are happening really close to each other in the logs; not quite simultaneously but pretty sub-secon
  • [11:54] Latif Khalifa: gave you Fake vendor.
  • [11:54] Fake vendor: Got 1
  • [11:54] Fake vendor: Got 1
  • [11:55] Which Linden: hm I got the dialog with only a cancel button
  • [11:55] Fake vendor: Got 1
  • [11:55] Latif Khalifa: no $L1?
  • [11:55] Aimee Trescothick: twitchy finger or bouncy mouse button
  • [11:55] Which Linden: I got two dialogs, one with a 1L$ button and one with only a cancel
  • [11:55] Latif Khalifa: lol there you go 1 bug
  • [11:56] Which Linden: so actually that's consistent with what I just said, but doesn't explain how we get dupes
  • [11:56] Latif Khalifa: i get two dialogs with $1L exactly on top of one another, so double click on $1L gives me two transactions within a few ms
  • [11:56] Which Linden: does anyone here know if Zyngo machines are default-action-pay?
  • [11:57] Latif Khalifa: none of them are
  • [11:57] Latif Khalifa: since they need touch
  • [11:57] Which Linden: Latif: hah my lag must be worse I didn't get two legit pay dialgos, let me keep trying
  • [11:57] Fake vendor: Got 1
  • [11:57] Latif Khalifa: vendors like mine don't need touch event so i set them to pay
  • [11:57] Fake vendor: Got 1
  • [11:57] Fake vendor: Got 1
  • [11:57] Which Linden: oh there we go
  • [11:57] Fake vendor: Got 1
  • [11:57] Fake vendor: Got 1
  • [11:58] Fake vendor: Got 1
  • [11:58] Fake vendor: Got 1
  • [11:59] Which Linden: hm, so latif that seems to suggest that the dupe bug is not caused by this dialog bug given what we know so far
  • [11:59] Which Linden: the dupe bug is definitely happening to zyngo machines
  • [11:59] Latif Khalifa: ah ok
  • [11:59] Aimee Trescothick: ah right
  • [12:00] Which Linden: (we should definitely file a pjira bug on these dialogs though if one doesn't exist already)
  • [12:00] Which Linden: maybe double-clicks on the pay pie menu item?
  • [12:01] Fake vendor: Got 1
  • [12:01] Twisted Laws: possible solution would be to have a flag in viewer object if the mClickAction is triggered and cleared when done, would stop dupes on any click action event
  • [12:01] Aimee Trescothick: hmm, wonder if the pie will take a double click if you're quick
  • [12:01] Which Linden: or have low framerate.... :-)
  • [12:01] Aimee Trescothick: yeah
  • [12:02] Which Linden: doesn't seem to work for me
  • [12:02] Tiny Blue: Kitty Head: All Go
  • [12:02] Aimee Trescothick: hmm, need a way to artificially drag the frame rate down lol
  • [12:03] Which Linden: actually mine is pretty terrible right now
  • [12:03] Aimee Trescothick: don't have a turbo button on the front of computers these days :(
  • [12:03] Which Linden: all your beauty is straining my video card
  • [12:03] Aimee Trescothick: LOL
  • [12:03] Aimee Trescothick: what do you class as terrible?
  • [12:04] Which Linden: 4-5
  • [12:04] ATechwolf Foxclaw: graphics to Ultra and 512m at a buzy help island will kill your frame rate.
  • [12:04] Which Linden: oddly if I increase window size it gets better
  • [12:04] Aimee Trescothick: yeah I'm around 7 or 8
  • [12:04] Latif Khalifa: i'm at 17 here
  • [12:04] Latif Khalifa: draw distance 128
  • [12:05] Which Linden: so yeah I'm having no luck with double clicks on the pie menu, shouldn't rule it out though
  • [12:05] Aimee Trescothick: all settings maxed out and 1920x1200 rers, I'm getting about 6-7
  • [12:06] Latif Khalifa: pie does sone weird stuff in 1.23, i would not rule it out either
  • [12:06] Aimee Trescothick: ah, I just got the "cancel button only" version double clicking on the pie menu
  • [12:06] Which Linden: orly! nice work
  • [12:06] Aimee Trescothick: yep! just got the double fully filled out version
  • [12:06] Which Linden: but did you second click go through and click the objet?
  • [12:07] Aimee Trescothick: hmm, good point
  • [12:07] Aimee Trescothick: turned it back to touch now, so we shall see
  • [12:07] Object: Touched.:
  • [12:07] Object: Touched.:
  • [12:07] Object: Touched.:
  • [12:08] Aimee Trescothick: hmm, yeah, looks like that may have been it
  • [12:08] Object: Touched.:
  • [12:08] John13 Tigerfish: Hey!
  • [12:08] Which Linden: lots a touching going ont :-)
  • [12:08] Aimee Trescothick: lol
  • [12:08] Latif Khalifa: finding a repro case is always the most efficient approach, staring at code alone requires extraordinary skill ;)
  • [12:09] Which Linden: so hey -- I should run, but this has been fantastic
  • [12:09] Latif Khalifa: plus trying to break stuff is fun :P
  • [12:09] Aimee Trescothick: ok that's weird, I'm getting tootips from Safari which is behind my SL window lol
  • [12:09] Latif Khalifa: take care which
  • [12:09] Which Linden: does someone want to file a bug for the dialog thing we found?
  • [12:09] Aimee Trescothick: bye Which :)
  • [12:09] Aimee Trescothick: yep
  • [12:09] Which Linden: Thanks aimee :-)
  • [12:09] Morgaine Dinova: I was at 20 FPS on 1.2.0 at 1920x1200 on 9800, but only 10 FPS on Tech's ebuild currently. From fast timers, it's alpha sorting that' changed.
  • [12:10] Morgaine Dinova: Cyu Which, tc :-)
  • [12:10] Which Linden: Thanks again!