tag:blogger.com,1999:blog-194370662024-02-21T04:38:20.656+05:30Veerapuram Varadhan's WorklogVeerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.comBlogger24125tag:blogger.com,1999:blog-19437066.post-85833914512511635922007-10-25T20:03:00.000+05:302007-10-25T22:22:43.893+05:30Healthcare CIO pats Evolution/Exchange 2.12.0<span style="font-family:courier new;">Skip Paul, a Novell mate working for the Open Platform Services (OPS) Sales for the East Coast of United States, forwarded me a message from one of our pilot customers, <a href="http://geekdoctor.blogspot.com/">John Halamka</a> - CIO of Caregroup. John, in his mail said:<br /></span><blockquote><span style="font-style: italic;font-size:100%;" ><tt>Could you pass this along to your developers -</tt><br /><br /><tt>Today I installed Evolution 2.12.0 as part of the Ubuntu Gusty release.</tt><br /><br /><tt>Every issue I have had with Evolution is now resolved. <span style="color: rgb(0, 0, 153);">Performance is </span></tt><tt style="color: rgb(0, 0, 153);">spectacular, caching is perfect and I no longer have to use OWA to </tt><tt style="color: rgb(0, 0, 153);">ensure reliability.</tt></span><br /></blockquote><span style="font-family:courier new;">John has been piloting various operating systems for more than a year now and when he tried SLED 10, he quoted saying:<br /></span><blockquote style="font-style: italic;"> <span style="font-size:100%;"><tt>My concern is that Evolution/Exchange connector is such a negative </tt><tt>experience that it threatens the success of the entire SLED platform.</tt></span> </blockquote> <span style="font-family:courier new;">He shared the same in a <a href="http://www.cio.com/article/120452">CIO.com</a> article, saying:<br /></span><blockquote style="font-style: italic;"><span style="font-size:100%;"><tt>The Evolution e-mail client presented the biggest problem. Every time he </tt><tt>launched the application, he had to wait five minutes to use it, until </tt><tt>it synced with CareGroup’s Microsoft Exchange server. If he deleted an </tt><tt>e-mail before the entire store of deleted e-mails had synced, or if he </tt><tt>tried sending an e-mail before all stored e-mails had synced, the </tt><tt>application would crash.</tt></span><br /></span> </blockquote><span style="font-size:130%;"><span style="font-style: italic;font-family:georgia;" ></span></span><span style="font-family:courier new;">As Evolution-Exchange maintainer, I teamed up with Skip and provided him various levels of optimization fixes and all of it were released as part of Evolution/Exchange 2.12.0. Skip front ended the efforts by ensuring timely delivery of patches and his feedbacks both ways. As mentioned in my <a href="http://vvaradhan.blogspot.com/2007/06/evolution-exchange-performance-series_28.html">blog</a>, the performance was greatly improved by these patches and the same is appreciated by John in his recent blog, saying:<br /></span><blockquote style="font-style: italic;"><span style="font-size:100%;"><tt>Congrats to the folks at Canonical who maintain Ubuntu and <span style="color: rgb(51, 51, 255);">to the folks </span></tt><tt style="color: rgb(51, 51, 255);">at Novell who have significantly upgraded their Evolution email client </tt><tt style="color: rgb(51, 51, 255);">to meet the needs of Microsoft Exchange users.</tt></span> </blockquote><span style="font-family:courier new;">It feels great to see your efforts/work gets directly appreciated by the users.<br /><br />John: Thank you for your honest reviews and Skip - for the wonderful support provided both ways.<br /><br /><span style="font-weight: bold;">Update:</span> Fixed some font weirdness.<br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com8tag:blogger.com,1999:blog-19437066.post-63304749042632803622007-10-23T20:07:00.000+05:302007-10-23T20:22:48.308+05:30Moved from Evolution/ExchangeAfter the release of <a href="http://vvaradhan.blogspot.com/2007/09/exchange-connector-evolution-212.html">Evolution/Exchange 2.12</a>, I moved to one of the highly motivated, determined and focussed teams that extends the cutting edge technologies from other platforms to Linux. <br /><br /><blockquote>using System;<br /><br />class HelloWorld<br />{<br /> public static void Main()<br /> {<br /> Console.WriteLine("Hello World !!!");<br /> }<br />}</blockquote>Yes, I am a proud <a href="http://mono-project.com/">Mono</a> hacker now and will be working in ADO.NET. Presently, I am just finding my ways to understand the requirements and roadmaps of the component with the help of, my mentor and the maintainer of ADO.NET, <a href="http://nagappanal.blogspot.com/">Nagappan</a>.<br /><br />I will continue to be available in #evolution channel and answer any Evolution/Exchange related queries. Thanks to everyone that supported me during the development of Evolution/Exchange 2.12.0.Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com2tag:blogger.com,1999:blog-19437066.post-33672452220007902007-09-24T16:20:00.000+05:302007-09-24T23:18:43.129+05:30Exchange Connector & Evolution 2.12<span style="font-family:courier new;">Another milestone in the journey of Evolution mail client - <a href="http://mail.gnome.org/archives/evolution-hackers/2007-September/msg00029.html">2.12 is released</a>. This is srag's (Srinivasa Ragavan - Hope I got your name right, this time - Srini) maiden release and it rocks. Good job, Srini. A preview of what it provides is <a href="http://blogs.gnome.org/sragavan/2007/09/21/evolution-212-released/">here</a>.<br /><br />This release is special, personally, as:<br /><br />This is the best release made after the initial 1.x days of Ximian Connector. It all started from the days of SLED Betas - getting Beta customers to test and report issues, fix and provide packages to reverify. Exchange connector has become quite stable and just like other softwares, with some bugs. Connector has a better summary support, optimized n/w bandwidth usage, majorly rewritten folder loading/refreshing techniques, on-demand-public folder loading and newly implemented mail/calendar delegation feature that enables your colleague to handle your mail/appointments when you are away from office .<br /><br />Thanks to all the customers/community users who provided test accounts to debug complex issues that are otherwise not possible to debug and fix. Remarkable improvement has gone into Connector in this release, especially in a state where people started recommending to use IMAP to access their Exchange mails instead of Connector.<br /><br />Special thanks to <a href="http://mysterion.org/%7Edanw/blog/">Dan Winship</a> for his time and help in answering my libsoup and connector related questions.<br /><br />Okay. I haven't yet mentioned why this is a special release to me. ;-) This is my maiden release as <span style="font-weight: bold; font-style: italic;">Exchange Connector Maintainer</span>. I took up the task with solving performance and stability issues as number-one-priorty than adding features and with much pride I declare this to be one of the best releases of Exchange Connector.<br /><br />Some of the performance work that has gone into this release, for your joy.<br />[1] - <a href="http://vvaradhan.blogspot.com/2007/06/evolution-exchange-performance-series_28.html">Folder loading optimization</a><br />[2] - <a href="http://vvaradhan.blogspot.com/2007/01/evolution-exchange-performance-series.html">On demand loading of folders (esp. public folders)</a><br />Watch out for more optimization work to be done in Exchange connector module.<br /><br />Onething, I tried hard to accomplish is the Exchange 2007 support - which will be a part of 2.14 release of Evolution.<br /><br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com14tag:blogger.com,1999:blog-19437066.post-19139898937698947822007-07-02T00:13:00.000+05:302007-07-02T01:03:07.673+05:30Hack week<span style="font-family: courier new;">Last week was <a href="http://idea.opensuse.org/content">Hack week</a></span> <span style="font-family: courier new;"> at Novell. At the beginning of the week, I started working on my idea of a <a href="http://idea.opensuse.org/content/ideas/out-of-the-box-backupsyncrestore-feature-for-evolution">out-of-the-box</a> backup/restore/archive manager application for Evolution. Due to some family occasion, I was out of station and hack-week, for three days. When I came back, I took up another <a href="http://idea.opensuse.org/content/ideas/start-evolution-in-less-than-3-seconds">idea</a> - a continuation of my <a href="http://vvaradhan.blogspot.com/2007/06/evolution-exchange-performance-series_28.html">Evolution Exchange Performance</a> work. Evolution exchange starts up in just 3 seconds (approx.) now. Patch is in nascent stage and more to come in another couple of days. Stay tuned!</span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-60415698375529456942007-06-28T01:17:00.000+05:302007-07-02T16:54:49.863+05:30Evolution Exchange Performance Series - Chapter 3 - Folder loading from 480 secs to < 1 sec<span style="font-family:courier new;">Close to a month now, have been working on squeezing Connector to save some time while it loads the folders. Remember <a href="http://vvaradhan.blogspot.com/2007/06/evolution-exchange-performance-series.html">Chapter-1</a> of my Evolution Exchange Performance Series blog - Yes, I based my optimization work from it. In the <a href="http://people.freedesktop.org/%7Evvaradan/misc/evo/graph-log-level.png">attached image</a>, as you can see most of the folder loading time is spent in <span style="font-style: italic;">camel_exchange_folder_construct()</span>. Construction of exchange folder objects does two major things:<br /></span><ul><li><span style="font-family:courier new;">Scanning the entire folder for any changes since last evolution session and</span></li><li><span style="font-family:courier new;">Fetch messages to keep things in sync</span></li></ul><span style="font-family:courier new;">These two operations contributed to a big level in connector folder loading time. Fix doesn't refresh if summary is available and scanning for changes, since last evolution session, is moved to a separate thread with appropriate threading-etiquettes.<br /><br />Here comes the supporting fact for my blog: :)<br /><br /></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://people.freedesktop.org/%7Evvaradan/misc/evo/Exchange-perf-chap-3.png"><img style="cursor: pointer; width: 320px;" src="http://people.freedesktop.org/%7Evvaradan/misc/evo/Exchange-perf-chap-3.png" alt="" border="0" /></a><br /><span style="font-family:courier new;"><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;"></span></span></span></span></span></span><br />(2.11.x timing may vary depending upon production servers - response from my test servers are quite quick)<br /><br /><span style="font-family:courier new;">With this fix, <span style="font-weight: bold;">Exchange Connector catches up with Microsoft Outlook w.r.t folder loading time</span>.</span> <span><span><span style="font-family:courier new;">Outlook users will love Evolution 2.11.5 - watch out for more performance hacks. This fixes <a href="http://bugzilla.gnome.org/show_bug.cgi?id=442186">442186</a>, part of <a href="http://bugzilla.gnome.org/show_bug.cgi?id=341214">341214</a> and <a href="http://bugzilla.gnome.org/show_bug.cgi?id=421091">421091</a>.</span></span></span><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-family:courier new;"><br /></span></span></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com8tag:blogger.com,1999:blog-19437066.post-25926670124052957622007-04-04T20:50:00.000+05:302007-06-22T08:05:24.338+05:30EDS + Hibernate = 100% CPU<span style="font-family: courier new;">There has been issues reported by GW users that Evolution hangs/suspends for a while when composing mails. We weren't able to reproduce the issue and respective gdb traces didn't give enough information. Lately, I started hibernating my laptop and when I resume from hibernation, I noticed that EDS started taking 100% CPU and when gdb is attached to the process... voila!!!.. EDS was running with 264 threads and most of it are waiting to update GW addressbook and rest are waiting to update GW calendars.<br /><br />A little further investigation revealed that it was because of the combination of g_timeout_add()+hibernation. GLib stores the last processed time for g_timeout_add and when hibernated, the memory image is stored and restored, when resumed from hibernation. When restored, callbacks registered with g_timeout_add() gets called - as the difference in time during hibernation and resume satisfies the g_timeout_add() timeout value and that too in multiples of 100. Harinath (of Mono fame) helped me understand the GLib part and the fixes have gone in for GW and webcal provider.<br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com6tag:blogger.com,1999:blog-19437066.post-55962853024172416042007-03-14T19:34:00.000+05:302007-06-22T07:49:44.502+05:30Microsoft ISA server support<span style="font-family: courier new;">Today I came across a <a href="http://www.gnome.org/projects/evolution/bugs.shtml">E2K_DEBUG</a> trace forwarded to me from a Beta customer that had OWA url like http://www.example.com/CookieAuth.dll?Logon and after some googling found out that, when a Mailbox server is behind a Microsoft ISA proxy server, the OWA url gets redirected to the above link. Evolution-exchange now will support Microsoft ISA server as well. <br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com2tag:blogger.com,1999:blog-19437066.post-53547142421026795982007-02-10T19:00:00.000+05:302007-06-22T07:33:55.403+05:30Microsoft (in)compatibility<span style="font-family: courier new;">Microsoft is known for introducing incompatibilities, whenever they release any updates or new version of their software. Latest in town is Microsoft Exchange 2007, which has changed a lot from its predecessor - MS Exchange 2003. MS Exchange 2007 has replaced the FE and BE server roles with something called CAS and Mailbox roles. CAS is more than its 2000/2003 counterpart, FE, where it handles both the business logic and renders OWA UI. With this change, MS Exchange 2007 introduced a new default OWA interface called "OWA" - that defines some new interface other than webDAV interface. This has currently broken Evolution Exchange connector from operating with MS Exchange 2007 servers.<br /><br />Interesting and challenging days ahead!<br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-49989337542398188542007-01-29T20:45:00.000+05:302007-06-22T06:49:26.147+05:30Proxy support in Evolution<span style="font-family:courier new;">One of the key features that is expected out of any application that communicates over a network is talking over a proxy connection. Evolution has been lacking this feature for quite some time and I implemented a quick support around SLED10 release with a limitation that "Authenticated Proxy" configurations are not supported. Now, its time to do something about it and I came up with something called a Network Preferences option in Evolution that looks similar to that of gnome-network-preferences capplet. I had to take this approach as a lot of Evolution-KDE users complained proxy not working as the respective gconf entries were missing.<br /><br />Following is the screenshot of the Network preferences window in Evolution:<br /><br /></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://people.freedesktop.org/%7Evvaradan/misc/evo/Evolution-Preferences.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://people.freedesktop.org/%7Evvaradan/misc/evo/Evolution-Preferences.png" alt="" border="0" /></a><span style="font-weight: bold;"></span><span style="font-family:courier new;">It uses libsoup for resolving hostnames and other SOCKADDR related processing.<br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com3tag:blogger.com,1999:blog-19437066.post-51813673619512571892007-01-06T03:21:00.000+05:302007-06-22T06:47:47.018+05:30Evolution Exchange Performance Series - Chapter 2 - Public Folder Loading<span style="font-family:courier new;">Around a month back started working on issues surrounding Exchange Public folders from subscribing to accessing/using them. A <a href="http://bugzilla.gnome.org/show_bug.cgi?id=339777">tracker</a> bug was already present in BGO and the most famous among them are <a href="http://bugzilla.gnome.org/show_bug.cgi?id=268412">268412</a>, <a href="http://bugzilla.gnome.org/show_bug.cgi?id=347811">347811</a> and <a href="http://bugzilla.gnome.org/show_bug.cgi?id=346728">346728</a>. As I just took over the responsibility of Evolution Exchange connector around August 2006 and then had a month-long sick leave because of <a href="http://en.wikipedia.org/wiki/Chikungunya">Chikungunya</a>, it was a slow start for me - reading through code, docs, MS articles, webDAV references etc. After a week of analysis, found out the issue in Setting up folder hierarchies - which is done during the startup and it goes into a recursive loop setting up hierarchies for all folders, including public folders. When an organization has quite a lot of nested-public-folders, Evolution will take a minimum of 30 mins to start.<br /><br />The complete fix was done in two-phases.<br />Phase-1:<br />--------<br /> Do not scan public-folders recursively during startup.<br />Phase-2:<br />--------<br /> Load folders on demand. This enabled us to achieve the maximum performance during subscribing to Public folders.<br />Any performance work needs to provide supporting data and here it is: (My test server has close to 250 public folders with a maximum depth of 21 subfolders)<br /><table><tbody><tr><td><b>S.No</b></td><td><b>Description of Test/task</b></td><td><b>Patch<br />(Sec)</b></td><td><b><=2.9.4<br />(Sec)</b></td></tr><tr><td>1</td><td>Configure an exchange account<br />Restart Evolution </td><td><b>7</b></td><td><b>65</b></td></tr><tr><td>2</td><td>Folder->Subscriptions<br />Selectthe configured Exchange account<br />Note time taken to show the“All Public Folders”</td><td><b>3</b></td><td><b>4</b></td></tr><tr><td>3</td><td>Expand “All PublicFolders”<br />Note time taken to display folder list</td><td><b>< 1 </b></td><td><b>168</b></td></tr><tr><td>4</td><td>Time taken totraverse to maximum depth folder</td><td><b>8</b></td><td><b>330</b></td></tr></tbody></table><br /><b>Memory consumption:</b><br />Before expanding a folder (in the folder->subscriptions dialog)<br /><table><tbody><tr><td><br /></td><td><b>Patch<br />(MB)</b></td><td><b><=2.9.4<br />(MB)</b></td></tr><tr><td>Virtual Memory</td><td><b>152.8</b></td><td><b>154.6</b></td></tr><tr><td>RSS</td><td><b>13.4</b></td><td><b>15.1</b></td></tr><tr><td>Shared</td><td><b>9.1 </b></td><td><b>9.2</b></td></tr></tbody></table><br />After expanding a folder:<br /><table><tbody><tr><td><br /></td><td><b>Patch<br />(MB)</b></td><td><b><=2.9.4<br />(MB)</b></td></tr><tr><td>Virtual Memory</td><td><b>152.8</b></td><td><b>201.6</b></td></tr><tr><td>RSS</td><td><b>13.4</b></td><td><b>62</b></td></tr><tr><td>Shared</td><td><b>9.1 </b></td><td><b>9.2</b></td></tr></tbody></table><br />Actual memory consumption:<br /><table><tbody><tr><td><br /></td><td><b>Patch<br />(MB)</b></td><td><b><=2.9.4<br />(MB)</b></td></tr><tr><td>Virtual Memory</td><td><b>0</b></td><td><b>47</b></td></tr><tr><td>RSS</td><td><b>0</b></td><td><b>46.9</b></td></tr><tr><td>Shared</td><td><b>0 </b></td><td><b>0</b></td></tr></tbody></table><br /><i>Note: Memory consumption data is taken using gnome-system-monitor and thus difference in Bytes are not shown above. Columns showing <b>0</b> would definitely have a difference at least in bytes.</i><br />Memory consumption to traverse to the maximum depth folder:<br /><table><tbody><tr><td><br /></td><td><b>Patch<br />(MB)</b></td><td><b><=2.9.4<br />(MB)</b></td></tr><tr><td>Virtual Memory</td><td><b>152.8</b></td><td><b>246.9</b></td></tr><tr><td>RSS</td><td><b>13.4</b></td><td><b>107.4</b></td></tr><tr><td>Shared</td><td><b>9.1 </b></td><td><b>9.2</b></td></tr></tbody></table><br />The fix also improved the overall folder loading performance.<br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-52229244612884776432006-08-11T19:46:00.000+05:302007-06-22T06:48:23.427+05:30Evolution Exchange Performance Series - Chapter 1 - Folder Loading<span style="font-family:courier new;">One of the critical issues in exchange mailer is - time spent to load the hierarchy or mail folders. See this graph: </span><a style="font-family: courier new;" href="http://people.freedesktop.org/%7Evvaradan/misc/evo/graph-log-level.png" title="Exchange mailer - Folder loading graph"><img src="http://people.freedesktop.org/%7Evvaradan/misc/evo/graph-log-level.png" alt="Exchange mailer folder loading graph" align="left" height="136" width="200" /></a><br /><br /><span style="font-family:courier new;">It clearly shows most of time is spent in constructing folder objects. The sample size used to generate this graph is two folders with 210 and 50 mails repectively. </span><a style="font-family: courier new;" href="http://people.freedesktop.org/%7Evvaradan/misc/evo/evo-ex-strace-checkpoints.patch" title="Strace checkpoints - Evolution Exchange">Patch</a><strong style="font-family: courier new;"> </strong><span style="font-family:courier new;">extends </span><a style="font-family: courier new;" href="http://primates.ximian.com/%7Efederico/news.html" title="Federico's blog">Federico's</a><span style="font-family:courier new;"> sample code and implements different levels of checkpoints. Graph on the left hand side is generated using a E2K_LOG_LEVEL=1.</span><br /><br /><span style="font-family:courier new;">As I mentioned in my </span><a style="font-family: courier new;" href="http://vvaradhan.blogspot.com/2006/08/evolution-exchange-connector.html" title="Evolution exchange connector">previous</a><span style="font-family:courier new;"> blog, </span><a style="font-family: courier new;" href="http://people.freedesktop.org/%7Evvaradan/misc/evo/plot-timeline.py" title="Plot timeline script for strace checkpoints patch">this</a><span style="font-family:courier new;"> is the customized plot-timeline script that generated this image.</span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-22741405914178332192006-08-11T01:04:00.000+05:302007-06-22T06:48:47.920+05:30Evolution Exchange Connector<span style="font-family:courier new;">A new feather got added to my cap of responsibilities w.r.t evolution, viz., Exchange connector - one of the distinguishing features of mighty </span><a style="font-family: courier new;" href="http://www.gnome.org/projects/evolution" title="Evolution">Evolution</a><span style="font-family:courier new;">. My responsibilities for Exchange connector ranges from fixing some critical customer issues to performance, scalability and stability of the module. One of the key problems with exchange module is performance. Initial loading of folders takes huge amount of time as compared to IMAP/POP/GW. After reading through quite a lot of tutorials and blogs, I came across </span><a style="font-family: courier new;" href="http://primates.ximian.com/%7Efederico/" title="Federico">Federico</a><span style="font-family:courier new;">'s </span><a style="font-family: courier new;" href="http://primates.ximian.com/%7Efederico/news-2006-03.html#login-time-2" title="Profiling using strace">blog</a><span style="font-family:courier new;"> about how strace can be helpfull for profiling with minimum coding.</span><br /><br /><span style="font-family:courier new;">Took the sample code from </span><a style="font-family: courier new;" href="http://primates.ximian.com/%7Efederico" title="Federico">Federico</a><span style="font-family:courier new;">'s blog and extended it a little bit to have different levels to avoid too many messages and included </span><em style="font-family: courier new;">thread-ids</em><span style="font-family:courier new;"> to group the messages. I have also customized the plot-timeline script to group by </span><em style="font-family: courier new;">thread-id</em><span style="font-family:courier new;">. Will upload the patch and the graph, generated by the script, later.</span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com1tag:blogger.com,1999:blog-19437066.post-1152863060136798632006-07-14T11:33:00.000+05:302006-07-14T13:16:19.706+05:30Spotlight<span style="font-family:courier new;">Lot many things have happened since my last blog. I am now a full-time <a href="http://www.gnome.org/projects/evolution">Evolution</a> Mail hacker and precisely the New <span style="font-weight:bold;">Mail Maintainer for Evolution</span>. Sounds thrilling, ain't it? ;) We are just finished with our SLED10 that we, in <a href="http://www.novell.com">Novell</a>, have been working sleeplessly for the past few months and the results are <span style="font-style:italic;">fantastic</span>. Just check out why people love it, <a href="http://www.novell.com/products/desktop/preview.html">here</a>.<br /><br />Thats the quick update on what I am currently into. Lets run through the various other things, quickly:<br /><br /><span style="font-weight:bold;"><a href="http://ldtp.freedesktop.org">LDTP</a></span>, my passion and a project headed by my buddy, <a href="http://nagappnal.blogspot.com">Nagappan</a>, received a Google SoC through GNOME and <a href="http://prashblog.be">Prashanth Mohan</a> is already knocking it out. <br /><br />The SoC proposal consists of three milestones: <a href="http://prashblog.be/2006/06/20/ldtp-in-tinderbox-and-jhautobuild/">LDTP integration with jhautobuild</a>, Evolution automation and LDTP Regression suite and Prashanth has started working on the second milestone and tinderbox integration is on the final stages to get upstream. For those interested, the log of a real test, run on the test server provided by <a href="http://www.0d.be/">Frederic Peters</a> is <a href="http://jhautobuild.0d.be/builds/2006-07-13-0000/">here</a> and a detailed log is <a href="http://jhautobuild.0d.be/builds/2006-07-13-0000/logs/ldtp-gedit-test/#test">here</a>.<br /><br />Two students, <a href="http://sp2hari.blogspot.com/">sp2hari</a> and <a href="http://integralsinxdx.blogspot.com/">taggy</a> from NIT, Trichy, spent 6 weeks as intern, as part of NOSIP, work like mad and contributed an awesome tool for LDTP called Record. Record captures the user actions on any application and generates a LDTP test script that can be played back. This makes generating-test-scripts easier - simply, automated test-script generation. <br /><br /><span style="font-weight:bold;"><a href="http://www.gnome.org/project/evolution">Evolution</a></span><br />After a mammoth effort by the team and the community, Evolution 2.6 is stable and sleeker than its previous versions. <br /><br />Recently, <a href="http://pvanhoof.be/blog/">Phillip Vanhoof</a> came up with the idea of mmap()'ing CamelFolderSummary instead of fread'ing it. We had around 2 hours of discussion and shared my experiences on CamelFolderSummary and other related things that he should consider when implementing mmap(). He has some <a href="http://pvanhoof.be/files/">12 versions</a> of patches and is close to what I asked for. Kudos!! Phillip. <br /><br />However, the behaviour of the patch is yet to be analysed on various other scenarios: Couple of them are 1) When messages are deleted, 2) When message flags are changed.. etc.<br /><br />Moreover, before taking upstream, the patch should be tested on a decent sample size using evolution and all the folder operations should be verified. Also, the patch should give a choice to the user/application to choose between mmap() and fread(). Guess, with said final touches it should make it upstream. Phillip? ;-)<br /><br />That's all for now.. stay tuned!!<br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com1tag:blogger.com,1999:blog-19437066.post-1149016331518690452006-05-31T00:41:00.002+05:302006-05-31T00:42:11.520+05:303rd Top in closing most bugs for last week<span style="font-family:courier new;">I was playing around in bugzilla creating more saved-searches for quicker access to bugs and found my name listed 3rd for closing most number of bugs in last 7 days on Past week's bug activity link in <a href="http://bugzilla.gnome.org">Gnome bugzilla</a>.<br /><br />As the link for past-week's-bug-activity keeps changing, <a href="http://bugzilla.gnome.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&amp;product=beagle&product=Connector&product=Evolution&product=Evolution-Data-Server&amp;product=GAL&product=gnome-pilot&long_desc_type=allwordssubstr&long_desc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=anywords&keywords=&bug_status=RESOLVED&resolution=FIXED&resolution=WONTFIX&resolution=DUPLICATE&resolution=NOTABUG&resolution=NOTGNOME&resolution=INCOMPLETE&resolution=OBSOLETE&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emaillongdesc2=1&emailtype2=substring&email2=vvaradhan%40novell.com&amp;bugidtype=include&bug_id=&changedin=8&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&namedcmd=Beagle-Bugs&newqueryname=&order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&type0-0-0=noop&value0-0-0=">here</a> is the list of bugs that I closed, includes evolution-conduits, beagle, connector, gnome-pilot and GAL bugs.<br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-1149016307063894932006-05-31T00:41:00.001+05:302006-05-31T00:41:47.063+05:30Bug triaging - Part 1<span style="font-family:courier new;">Last week I triaged around 36 bugs in GAL, which is now a retired-component of Evolution. Have to categorize that list of bugs in to fix-for-gods-sake, fix-for-goodness-sake and wont-fix.<br /><br />Today, triaged around 80 bugs in all including Evolution-conduits, gpilot and Beagle.<br /><br />Marked around 20 bugs as FIXED/INCOMPLETE/NOTGNOME and 30 bugs to be fixed.<br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-1149016277512257472006-05-31T00:41:00.000+05:302006-05-31T00:41:17.516+05:30Recurrence - Mind blowing stuff of iCal - 2<span style="font-family:courier new;">Today I committed my recurrence work in evolution-exchange along with other conduit patches. Now, evolution-conduits can sync against exchange and groupwise (needs testing) accounts.<br /><br />Following links will take you to those committed changes:<br />1) <a href="http://cvs.gnome.org/bonsai/cvsquery.cgi?branch=&dir=evolution&amp;who=vvaradan&date=explicit&mindate=2005-12-06%2003:38&maxdate=2005-12-06%2003:40">Calendar conduit</a><br />2) <a href="http://cvs.gnome.org/bonsai/cvsquery.cgi?branch=&amp;dir=evolution&who=vvaradan&date=explicit&mindate=2005-12-06%2003:40&maxdate=2005-12-06%2003:42">Todo conduit</a><br />3) <a href="http://cvs.gnome.org/bonsai/cvsquery.cgi?branch=&dir=evolution&amp;who=vvaradan&date=explicit&mindate=2005-12-06%2003:42&maxdate=2005-12-06%2003:44">Addressbook conduit<br /></a>4) <a href="http://cvs.gnome.org/bonsai/cvsquery.cgi?branch=&amp;dir=evolution-exchange&who=vvaradan&date=explicit&mindate=2005-12-06%2003:23&maxdate=2005-12-06%2003:25">Recurrence fix in evolution-exchange</a><br /><br />Now, that <span style="font-style: italic;">Eureka </span>thing. Yes, the bug was in exchange-calendar code that reads events from the server. According to MSDN, events have some specific property that has values from 0 - 4, which represents events with master object, without master object, detached instances etc. Evolution-exchange was always querying for events with codes 0 and 1, which made the message not to appear in evolution as it didn't even fetch. <a href="mailto:pchenthill@novell.com">Chen</a> fixed this thing today.</span><a href="mailto:pchenthill@novell.com"><span style="font-family:courier new;"></span></a><span style="font-family:courier new;"><br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-1149016236726208472006-05-31T00:40:00.000+05:302006-05-31T00:40:36.726+05:30Recurrence - Mind blowing stuff of iCal<span style="font-family:courier new;">The supplemental </span><a style="font-family: courier new;" href="http://mail.gnome.org/archives/evolution-patches/2005-November/msg00112.html">patch</a><span style="font-family:courier new;"> had a new </span><span style="font-weight: bold; font-style: italic;font-family:courier new;" >FIXME </span><span style="font-family:courier new;">to support syncing of instances of a calendar event. In simpleton, recurrences. Recurrence in Evolution has always been a nightmare and especially w.r.t individual backends its more than a nightmare. </span><a style="font-family: courier new;" href="mailto:pchenthill@novell.com">Chen</a><span style="font-family:courier new;"> had made quite good contributions for recurrence in evolution-data-server and some of the other backends. My synchronization stuff cannot be close to complete, if I don't have support for syncing the instances of a recurrence. Today, with a determined mind, was looking at the other backends for similar implementation and finally, got the code in place.</span><br /><br /><span style="font-family:courier new;">Testing is what makes us happy to see our code working. Well, it was working except for a specific scenario in which we have only (a) instance(s) without any corresponding master object. Hugh... I was tired finding out the roots of the cause and finally got to a point where I could say, "Eureka!! I found the reason". Well, thatz it for today and keep watching to know more about that "Eureka" stuff. ;-)</span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-1149016211382252272006-05-31T00:39:00.001+05:302006-05-31T00:40:11.386+05:30Exchange synchronization is back.<span style="font-family:courier new;">Just cooked up a patch for </span><span style="font-style: italic;font-family:courier new;" >todo-conduits</span><span style="font-family:courier new;"> to sync with </span><span style="font-style: italic;font-family:courier new;" >exchange-tasks</span><span style="font-family:courier new;">. All the three, Calendar, Tasks and Addressbook (contact) conduits are now </span><span style="font-style: italic;font-family:courier new;" >authentication</span><span style="font-family:courier new;"> aware that they can authenticate without user interaction. However, user should have saved their account passwords through </span><a style="font-family: courier new;" href="http://www.gnome.org/projects/evolution">Evolution</a><span style="font-family:courier new;">.</span><br /><br /><span style="font-family:courier new;">Patches are as follows:<br /><a href="http://mail.gnome.org/archives/evolution-patches/2005-November/msg00111.html">Calendar and Contacts<br /></a></span><a href="http://mail.gnome.org/archives/evolution-patches/2005-November/msg00175.html"><span style="font-family:courier new;"></span></a><span style="font-family:courier new;"><a href="http://mail.gnome.org/archives/evolution-patches/2005-November/msg00175.html">Tasks</a></span><br /><span style="font-family:courier new;"><a href="http://mail.gnome.org/archives/evolution-patches/2005-November/msg00112.html">Supplemental fix for exchange-calendar sync to work</a>. ;-)</span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-1149016178483197662006-05-31T00:39:00.000+05:302006-05-31T00:39:38.490+05:30Beagle memory optimization - Filters<span style=";font-family:courier new;font-size:100%;" >On 26th November 2005, myself and <a href="mailto:dbera.web@gmail.com">Debajyothi Bera</a> started discussing about memory consumption of <a href="http://beagle-project.org/">Beagle</a>, especially its filters. DBera gave a link to the <a href="http://blog.trowbridge.org/index.php?p=49">heap-buddy </a>output of Source filter, which showed around 2.9M of allocations.<br /><br />I immediately pulled heap-buddy from the trunk and installed it and ran beagle-extract-content on a 'C#' source-code file of size approx. 130K. The report showed around 2.6M of allocations for extracting contents from that 'C#' file and the size of extracted content was just around 68K. Here is the heap-buddy output before fix:<br /><br />bhargavi@vvaradhan-lap:~/cvs/beagle/beagle-before-fix/beagled> heap-buddy outfile<br /> SUMMARY<br /><br /> Filename: outfile<br />Allocated Bytes: 2.6M<br />Allocated Objects: 68736<br /> GCs: 10<br /> Resizes: 8<br />Final heap size: 1.3M<br /><br /> Distinct Types: 170<br /> Backtraces: 2572<br /><br />and individual "type-based-allocations" as follows...<br /><br />bhargavi@vvaradhan-lap:~/cvs/beagle/beagle-before-fix/beagled> heap-buddy outfile types<br /><br /> Type # Total AvSz AvAge BT#<br /> string 44744 2.0M 47.4 0.2 636<br /> string[] 4460 106k 24.4 0.1 59<br /> char[] 3922 98k 25.7 0.3 59<br /> char 7141 69k 10.0 0.0 8<br /> System.Text.StringBuilder 1940 45k 24.0 0.0 71<br />System.Collections...t/SimpleEnumerator 1339 31k 24.0 0.0 17<br /> byte[] 21 29k 1422.7 5.6 21<br /> System.Collections.Hashtable/Slot[] 106 26k 251.2 1.8 71<br /> object[] 321 23k 76.2 0.7 182<br /> Beagle.Filters.FilterHtml 695 21k 32.0 3.9 1<br /> System.MonoType 650 16k 25.7 8.1 166<br /> System.Reflection.MonoMethod 293 11k 41.0 7.8 20<br /> System.Xml.NameTable/Entry[] 20 10k 528.0 0.1 13<br /> System.Xml.NameTable/Entry 226 5.3k 24.0 0.4 94<br /> System.IO.FileInfo 65 5.1k 80.0 1.1 2<br /> System.Collections.ArrayList 255 5.0k 20.0 0.8 154<br />System.Xml.XmlName...eManager/NsScope[] 15 4.9k 336.0 0.1 8<br /> System.Reflection.PropertyInfo[] 116 4.6k 40.9 0.0 10<br /> System.Collections.Hashtable 93 4.4k 48.0 2.1 62<br /> System.Reflection.MethodInfo[] 20 3.9k 199.6 0.0 3<br /> System.Attribute[] 197 3.6k 18.6 0.4 66<br />System.Xml.Serialization.XmlAttributes 55 3.2k 60.0 0.3 25<br /> System.MonoType[] 201 3.1k 16.0 6.0 8<br /> System.Reflection.MonoCMethod 125 2.6k 21.5 5.3 6<br /> System.Xml.Serialization.TypeData 58 2.5k 44.0 8.9 57<br /><br />(skipped 145 types)<br /><br />... check the top 4 types.. string, string[], char, char[] and StringBuilder. These are the types that contributed most of allocations.<br /><br />A little closer look at the Filter.cs revealed a potential-unnecessary-allocation of string being done. The fix <a href="http://cvs.gnome.org/bonsai/cvsview2.cgi?diff_mode=context&whitespace_mode=show&root=/cvs/gnome&subdir=beagle/beagled&command=DIFF_FRAMESET&root=/cvs/gnome&file=Filter.cs&rev1=1.36&rev2=1.37">here</a> fixed it. The fix saved around 600K of allocations for filtering the mentioned "C#" file.<br /><br />Heap-buddy report after the fix:<br /><br />bhargavi@vvaradhan-lap:~/cvs/beagle/beagle/beagled> heap-buddy outfile<br /><br /> SUMMARY<br /><br /> Filename: outfile<br />Allocated Bytes: 2.0M<br />Allocated Objects: 47082<br /> GCs: 8<br /> Resizes: 8<br />Final heap size: 1.3M<br /><br /> Distinct Types: 170<br /> Backtraces: 2581<br /><br />.. and "individual-type-based-allocations"..<br />bhargavi@vvaradhan-lap:~/cvs/beagle/beagle/beagled> heap-buddy outfile types<br /><br /> Type # Total AvSz AvAge BT#<br /> string 32361 1.6M 50.8 0.2 639<br /> char 7141 69k 10.0 0.0 8<br /> char[] 218 33k 157.3 4.4 54<br />System.Collections...t/SimpleEnumerator 1334 31k 24.0 0.0 17<br /> byte[] 21 29k 1422.7 4.4 21<br /> string[] 685 27k 40.9 0.6 55<br /> System.Collections.Hashtable/Slot[] 107 26k 250.3 1.4 72<br /> object[] 319 23k 75.7 0.6 182<br /> Beagle.Filters.FilterHtml 734 22k 31.6 3.2 1<br /> System.MonoType 652 16k 25.6 6.4 166<br /> System.Reflection.MonoMethod 293 11k 41.0 6.1 20<br /> System.Xml.NameTable/Entry[] 20 10k 528.0 0.1 13<br /> System.Xml.NameTable/Entry 226 5.3k 24.0 0.4 94<br /> System.Collections.ArrayList 253 4.9k 20.0 0.6 152<br />System.Xml.XmlName...eManager/NsScope[] 15 4.9k 336.0 0.1 8<br /> System.Reflection.PropertyInfo[] 116 4.6k 40.9 0.0 10<br /> System.IO.FileInfo 57 4.5k 80.0 0.1 2<br /> System.Collections.Hashtable 94 4.4k 48.0 1.6 63<br /> System.Reflection.MethodInfo[] 20 3.9k 199.6 0.0 3<br /> System.Attribute[] 197 3.6k 18.6 0.3 66<br />System.Xml.Serialization.XmlAttributes 55 3.2k 60.0 0.3 25<br /> System.MonoType[] 202 3.2k 16.0 4.5 8<br /> System.Text.StringBuilder 127 3.0k 24.0 0.2 85<br /> System.Reflection.MonoCMethod 122 2.6k 21.5 4.3 6<br /> System.Xml.Serialization.TypeData 58 2.5k 44.0 6.9 57<br /><br />(skipped 145 types)<br /><br />When you compare the above two reports, the main contributors for memory allocations were reduced after fix.<br /><br />The current fix will give some good numbers when run on bigger documents. (Will post them later.)<br /><br />As a side-effect of this fix, the filters run little faster than they used to be. ;-)</span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-1149015789164418272006-05-31T00:32:00.000+05:302006-05-31T00:33:09.166+05:30Dtrace and glib<span style="font-family:courier new;">Memory leaks have always been difficult problems to deal it. There are many tools available and most of them <span style="font-style: italic;">preloads</span> the probes and thus adds overhead on the execution of software.<br /><br />During recent encounters with memory leaks, I thought of trying DTrace, the dynamic tracing tool available from Solaris. It operates on the kernel level probes and thus doesn't add overhead by <span style="font-style: italic;">preloading</span> probes during execution. </span><span style="font-family:courier new;">It took me a while to get the setup ready for a noble cause. ;)<br /><br />And bingo!!, got a dtrace script and a supporting perl script that ease the job of printing the stack that leaks memory. Both the scripts are available <a href="http://blogs.sun.com/roller/page/sanjeevb/20050614">here</a>. The output of the script was quite satisfactory, however, glib uses memory-pools that doesn't actually free the memory, rather, mark it for re-use and similarly, its allocation routines return pointers from the pool, when available otherwise allocates fresh memory and maintain it in the pool.<br /><br />The DTrace script in the link actually uses the standard syscall probes, which in this case wouldn't be appropriate. So, I came up with the following script for glib:<br /><br /></span> <pre>#!/usr/sbin/dtrace -s<br /><br />pid$target:libglib-2.0.so.0:g_malloc:entry<br />{<br /> self->trace = 1;<br /> self->size = arg0;<br />}<br />pid$target:libglib-2.0.so.0:g_malloc:return<br />/self->trace == 1/<br />{<br /> printf("Ptr=0x%p Size=%d", arg1, self->size);<br /> ustack();<br /> self->trace = 0;<br /> self->size = 0;<br />}<br /><br />pid$target:libglib-2.0.so.0:g_realloc:entry<br />{<br /> self->trace = 1;<br /> self->size = arg1;<br /> self->oldptr = arg0;<br />}<br /><br />pid$target:libglib-2.0.so.0:g_realloc:return<br />/self->trace == 1/<br />{<br /> printf("Ptr=0x%p Oldptr=0x%p Size=%d", arg1, self->oldptr,<br />self->size);<br /> ustack();<br /> self->trace = 0;<br /> self->size = 0;<br />}<br /><br />pid$target:libglib-2.0.so.0:g_malloc0:entry<br />/self->trace == 1/<br />{<br /> self->trace = 1;<br /> self->size = arg1;<br />}<br /><br />pid$target:libglib-2.0.so.0:g_malloc0:return<br />/self->trace == 1/<br />{<br /> printf("Ptr=0x%p Size=%d", arg1, self->size);<br /> ustack();<br /> self->trace = 0;<br /> self->size = 0;<br />}<br /><br />pid$target:libglib-2.0.so.0:g_free:entry<br />{<br /> printf("Ptr=0x%p ", arg0);<br />}<br /><br /></pre><br /><span style="font-family:courier new;">The test program to verify the script:<br /><br /></span> <pre>#include <stdio.h><br />#include <glib.h><br /><br />int<br />main ()<br />{<br />gchar* str = NULL;<br />int i;<br /><br />for (i = 0; i < str =" g_strdup"></stdio.h></pre><br /><span style="font-family:courier new;">DTrace reported "Zero" memory leaks and I sort of convinced that the script works and can be run on bigger application like <a href="http://www.gnome.org/projects/evolution">Evolution</a>.<br /><br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-1149015714732110862006-05-31T00:31:00.001+05:302006-05-31T00:31:54.733+05:30Travelogue: NCAC - 2005, PSG Tech, Coimbatore.<span style="font-family:courier new;">My travelogue can be reached <a href="http://varadhan.blogspot.com/2006/01/travelogue-ncac-2005-psg-tech.html">here</a>.<br /><br />It was a real fun to talk about <span style="font-style: italic;">Open Source.</span> Just three weeks before this event, the department had inaugurated a lab of Open Source and some of their alumni members from <a href="http://www.novell.com/linux">Novell</a> presented talks on Open Source Technologies and distributed <a href="http://www.opensuse.org">OpenSuSE</a> DVDs to the lab and students.<br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-1149015685024338162006-05-31T00:31:00.000+05:302006-05-31T00:31:25.026+05:30Eureka!! Another Planet discovered.<span style="font-family:courier new;">Isn't the subject amazing? Yep, I guess. Today, while blogging and reading other planets, a <span style="font-style: italic;">chotasa</span> spark <span style="font-style: italic;">jalaa</span> in my mind..oO<span style="font-size:130%;">O</span><span style="font-size:180%;">O</span><span style="font-size:180%;">(</span><span style="font-style: italic;">Why not we have a planet for evolution?</span><span style="font-size:180%;">)</span>......<br /><br /><span style="font-style: italic;">jeee booom baaaa</span>aaa....,<br /><br />Here it is, however, it is as of now running locally on my laptop, will soon move it to a publicly accessible server.<br /><br />WOW!! I should really appreciate and thank, <a href="http://www.gnome.org/%7Ejdub/blog/">Jeff Waugh</a> and <a href="http://people.ubuntu.com/%7Escott/arch/personal/">Scott James Remnant</a> for the <a href="http://planetplanet.org/">Planet</a> stuff. The setup was so easy that it took hardly 5 mins to get my planetevolution up and running. Great work guys.<br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-1149015644731060912006-05-31T00:30:00.000+05:302006-05-31T00:30:56.450+05:30More enhancements than bugs, isn't it great?<span style="font-family:courier new;">From the list of around 30 pilot-conduit bugs, today I categorized them in to two <span style="font-style: italic; font-weight: bold;">broad</span> categories, <span style="font-weight: bold;">fix-for-god-sake</span> and <span style="font-weight: bold;">fix-for-goodness-sake.</span> There was a third category, <span style="font-size:85%;"><span style="font-style: italic;">ask-nice-to-get-fixed</span></span>, as a goodies for the hacker contributing to it. Most of the bugs decorated the <span style="font-style: italic;">fix-for-goodness-sake</span> category, as many of <span style="font-style: italic;">fix-for-god-sake</span>s' are gone, phew. :-)<br /><br />Its really the right time to start supporting the new Palm OS databases which, pilot-link 0.12.x supports, in evolution-conduits. First one is <span style="font-weight: bold;">Contacts</span>, with so many requests, with one of them falling in to <span style="font-style: italic;">ask-nice-to-get-fixed</span> category. ;-)<br /><br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0tag:blogger.com,1999:blog-19437066.post-1149015581549745852006-05-31T00:28:00.001+05:302006-05-31T00:29:41.560+05:30A Beagle bite<span style="font-family:courier new;">It feels like <span style="font-style: italic;">void</span>, even after doing lot of coding in evolution & co, till, I get a <a href="http://beagle-project.org/">Beagle</a> bite. May be that Beagle hacking is a real fun. After the <a href="http://vvaradan.blogspot.com/2005/11/beagle-memory-optimization-filters.html">memory-optimization</a> work, I took two-bugs filed by our test-hero, <a href="mailto:drichard@largo.com">David Richards</a>, <a href="http://bugzilla.gnome.org/show_bug.cgi?id=323276">323276</a> and <a href="http://bugzilla.gnome.org/show_bug.cgi?id=323312">323312</a>. Though both the bugs are fixed, I haven't checked-in the fix for 323276 as it requires a little debugging-work to be done to get rid of a <span style="font-style: italic;">double free</span> error.<br /><br />323312 actually brought-up a corner case in the FilterPPT, actually, I would say one of the weirdness of Microsoft's formats. We were reading till EOF of the PPT stream and it was working fine except the document attached with the bug. Some stray bytes were left without reading causing the filter to enter into an infinite-loop.<br /><br />Guess, will have more beagle-bites this week.<br /><br /></span>Veerapuram Varadhanhttp://www.blogger.com/profile/09986494424406435933noreply@blogger.com0