[03:14] *** eikenberry_ has joined #kamaelia |
[04:51] *** Lawouach_ has joined #kamaelia |
[05:48] < Lawouach_> freaking memory leak is still there |
[05:48] < Lawouach_> raaah |
[05:48] < Lawouach_> misery |
[06:00] *** Lawouach_ doesn't understand how the debug work in Axon |
[06:01] < Lawouach_> it seems a debug object is created by default for every component |
[06:01] < Lawouach_> how do I get its trace? |
[06:03] < Lawouach_> let's see the introspector |
[06:03] < Lawouach_> I'm a crazy man |
[06:04] < MS-> This way: |
[06:04] < MS-> http://code.google.com/p/kamaelia/source/browse/trunk/Sketches/JL/IRC/frozen/IRCClient.py |
[06:04] < MS-> you add some debug sections, as per lines 83 & 84 |
[06:04] < MS-> then use it as per line 127 |
[06:04] < MS-> assert self.debugger.note('IRCClient.main', 5, 'received talk ' + str(data)) |
[06:05] < MS-> In some versions of python (not all it seems) asserts are not compiled |
[06:05] < MS-> if you use one of the -O switches |
[06:05] < MS-> which is why it uses assert |
[06:05] < MS-> The arguments to debugger.note are |
[06:05] < MS-> < section>, < debug level> , < what to display> |
[06:06] < MS-> in debugger.addDebugSection , the arguments are |
[06:06] < MS-> < section>, < max level of debugging to show> |
[06:07] < MS-> It was developed *very* early on in Axon's life, and I thought it didn't work after the move TO Sourceforge, so I was surprised to see it still worked when Jinna used it |
[06:07] < MS-> :) |
[06:08] < MS-> It can also take a debug.conf file, which provides lots of defaults, but it looked in a specific place, and crashed otherwise (deliberately) |
[06:08] < MS-> And that part was more pain than wanted, so that got switched off |
[06:08] < MS-> Hence my surprise when Jinna used it and it still worked |
[06:10] < MS-> I need to add it to the list of stuff to improve |
[06:10] < MS-> Reinstating it to use inheritable defaults now would be really quite useful |
[06:11] < MS-> or something like |
[06:11] < MS-> class ...(..component): |
[06:11] < MS-> debugSections = { |
[06:11] < MS-> < sdfsdf> .... |
[06:11] < MS-> } |
[06:11] < MS-> since you'd be able to override that at constructor time then |
[06:11] < MS-> ie debug on a per object basis |
[06:12] < Lawouach_> sorry I got distracted |
[06:12] < Lawouach_> erading back |
[06:12] < MS-> np |
[06:13] < MS-> Jinna's AIM code also appears to use it somewhat: http://code.google.com/p/kamaelia/source/browse/trunk/Sketches/JL/AIM_ |
[06:14] < Lawouach_> hmm |
[06:14] < Lawouach_> does it mean I have to do that for every single component I want to debug? |
[06:14] < Lawouach_> hmm that sounds tedious :) |
[06:14] < Lawouach_> First I want to check that introspector |
[06:14] < Lawouach_> I'm pretty sure I have some trailing references |
[06:15] < Lawouach_> I need find where :) |
[06:15] *** MS- nods |
[06:15] < MS-> The wakeable introspector is useful for seeing what's live |
[06:15] < MS-> But not dead references |
[06:15] < MS-> For that you need to compare with garbage |
[06:16] < Lawouach_> yeah but that's my issue |
[06:17] < MS-> Really need to componentise that. |
[06:17] < MS-> I was doing it manually last time. |
[06:17] < Lawouach_> whenever I call gc.collect() after I got a list of objects in gc.garbage, it actually frees up the memory |
[06:17] < Lawouach_> it's like a bad joke |
[06:17] < MS-> That means you don't have a leak |
[06:17] < MS-> Not an official |
[06:17] < MS-> one at least |
[06:18] < MS-> It just means that memory usage with have a "saw" shape until the gc runs |
[06:18] < MS-> which it does periodically |
[06:19] < Lawouach_> right |
[06:19] < Lawouach_> that makes sense |
[06:43] < Lawouach_> Hmm the introspector works but I don't see anything with AxonVisualiser |
[06:43] < Lawouach_> the window opens up but nothing is ever displayed |
[06:43] < Lawouach_> any hints? |
[06:49] *** Uraeus has joined #kamaelia |
[06:51] < MS-> How are you running the axon visualiser ? |
[06:52] < MS-> Built in? standalone? If standalone as a server, you are sending it details ? (As per the examples in /Examples ? :) ) |
[06:52] < MS-> (silly random qs) |
[06:52] < MS-> http://www.kamaelia.org/AxonVisualiser also has some details |
[06:52] < Lawouach_> Pipeline(Introspector(), |
[06:52] < Lawouach_> AxonVisualiser()).run() |
[06:53] < Lawouach_> With my XMPP client activated before that |
[06:53] < MS-> http://www.kamaelia.org/Components/pydoc/Kamaelia.Util.Introspector says that will fail |
[06:54] < MS-> MyComplexSystem().activate() |
[06:54] < MS-> Pipeline( Introspector(), |
[06:54] < MS-> text_to_token_lists(), |
[06:54] < MS-> AxonVisualiser(), ) |
[06:54] < MS-> Example has a missing , |
[06:54] < MS-> OK, I have to go afk back later |
[06:54] < MS-> hope that helps :) |
[06:54] < MS-> cya |
[06:54] *** MS- has parted #kamaelia |
[06:55] < Lawouach_> cya |
[06:55] < Lawouach_> ta |
[07:01] < Lawouach_> right it worked better text_to_token_lists |
[07:01] < Lawouach_> though now it crashes when I run the program |
[07:01] < Lawouach_> :p |
[07:24] < Lawouach_> ah ah fixed with the latest svn release of pygame |
[07:26] < Lawouach_> it's awesome |
[07:26] < Lawouach_> I love it |
[07:26] < Lawouach_> why haven't used it before? |
[07:27] < Lawouach_> and it proves I don't have a leak in regards to trailing components and linkages because each time the client shutsdown I'm back to my initiali state of graph |
[07:27] < Lawouach_> just the visualiser |
[07:57] *** vmlemon_ has joined #kamaelia |
[08:06] *** MS- has joined #kamaelia |
[08:06] < MS-> back |
[08:07] < MS-> Glad you like the visualiser. It's really neat to watch connections starting & finishing on a server IMO :) |
[08:20] *** vmlemon_ has joined #kamaelia |
[08:30] < Lawouach> my xmpp lib has so many connections it becomes quickly tedious to actually make anything of it |
[08:30] < Lawouach> but I'm glad I saw the connections being correctly dropped |
[08:31] < MS-> Indeed |
[08:31] < MS-> The problem with the introspector at present is that it doesn't provide nested data at present, and the visualiser can't handle nesting |
[08:31] < MS-> Would be a great thing for someone to work on |
[08:34] < Lawouach> yeah |
[08:38] < Lawouach> interestingly the creation of the xmpp client, which has so many children and linkages, is hitting the CPU rather hard |
[08:44] < MS-> Makes it a useful test case for future optimisations then :) |
[08:44] < MS-> ie for getting it running with this: http://code.google.com/p/kamaelian/source/browse/sketches/Axon |
[08:44] < MS-> which is still in progress |
[08:50] < Lawouach> :) |
[08:50] < Lawouach> I think the hit comes from the amount of object creation |
[08:51] < Lawouach> I'm still unsure whether or not a debug object isn't created by default no matter what |
[08:51] < MS-> I think the issue is also that python objects are relatively expensive in those terms |
[08:51] < Lawouach> which for instance is rather useless |
[08:51] < MS-> The debug object is probably created by default |
[08:51] < MS-> But IIRC it's a global debugger |
[08:51] < MS-> not local |
[08:51] < MS-> I think it's a shared reference |
[08:51] < MS-> It's old code |
[08:52] < MS-> I'd been meaning to either delete it or revamp it |
[08:52] < MS-> Yep you get one: |
[08:53] < MS-> # If the client has defined a debugger in their class we don't want to override it. |
[08:53] < MS-> # However if they haven't, we provide them with one |
[08:53] < MS-> In microprocess.__init__ |
[08:53] < MS-> if not 'debugger' in self.__dict__.keys(): |
[08:53] < MS-> self.debugger = debug() |
[08:53] < MS-> self.debugger.useConfig() |
[08:53] < MS-> That's fragile code I note |
[08:53] *** Uraeus has joined #kamaelia |
[08:54] < MS-> Didn't know that then though :) |
[08:54] < MS-> Axon.Microprocess has lots of debugging support inside it |
[08:55] < Lawouach> yeap that was the one I was mentionning |
[08:55] < MS-> It is actually useful on occasion, when something goes rather wrong |
[08:55] < Lawouach> yeah but in most cases it's just a useless object created |
[08:55] *** MS- nods |
[08:55] < MS-> Time to reconsider that then |
[08:56] < MS-> Actually I wonder how much we'd just "gain" by removing it all... |
[08:56] < Lawouach> I don't know |
[08:56] < MS-> Or wrapping in if 0: 's |
[08:56] < Lawouach> :) |
[08:57] < MS-> Mind you, back then it was very unclear how everything should work, so it's to be expected :) |
[08:57] < Lawouach> eh eh |
[08:57] < Lawouach> well anyway, that's probably only a minor aspect of the Axon's refactoring to come some day :) |
[08:58] < MS-> The scheduler needs a revamp too. (Which to be fair on self, is where I'm starting) |
[08:58] < MS-> indeed |
[08:58] < MS-> The Axon2 code is much cleaner IMO |
[09:46] < MS-> I'm not at home, but apparently the paper copies of my tutorial are. At least, enough for the people currently signed up :) |
[09:47] < Lawouach_> :) |
[09:47] < Lawouach_> when is your talk again? |
[09:47] < MS-> Sunday morning |
[09:47] < MS-> 9:15am (!) |
[09:49] < Lawouach_> early :) |
[09:53] < MS-> Indeed. |
[09:54] < MS-> It's why I'm travelling tomorrow really |
[11:36] *** Lawouach__ has joined #kamaelia |
[11:38] *** Lawouach_ has joined #kamaelia |
[11:54] < Lawouach_> hmm |
[11:58] *** vmlemon_ has joined #kamaelia |
[12:08] *** salmon_ has joined #kamaelia |
[14:03] *** MS- has parted #kamaelia |
[14:51] *** vmlemon has joined #kamaelia |
[15:03] *** Lawouach has joined #kamaelia |
[15:21] *** vmlemon_ has joined #kamaelia |
[15:21] < vmlemon_> Hi |
[18:00] *** MS- has joined #kamaelia |
[18:00] < MS-> evening |
[18:00] < MS-> I have a video camera for recording the tutorial :-) |
[18:00] < MS-> And other talks at europython |
[18:00] < MS-> :) |
[18:01] < MS-> Looking at these handouts, I'm really pleased with them :) |
[18:02] < vmlemon_> Hi MS- |
[18:02] < MS-> hiya |
[18:03] < vmlemon_> Sounds good |
[18:13] < MS-> Kids are really impressed with them :) |
[18:13] < MS-> Was trying to figure out how to explain what a conference is |
[18:13] < MS-> and what a tutorial is |
[18:13] < MS-> and then I realised |
[18:13] < MS-> It's just "show and tell" from their perspective :) |
[18:14] < vmlemon_> Heh |
[19:29] *** salmon_ has joined #kamaelia |
[22:44] *** eikenberry_ has joined #kamaelia |