Saturday, January 21, 2012

KDE 4.8 RC2 on Solaris 11

Finally I found some motivation to debug the broken login to KDE. At first I got distracted by noticing most of plasma applets were crashing and I thought it might be related. I noted some familiar functions when debugging that and the deja-vu feeling started to grow. Indeed, I traced this Studio bug just a few weeks ago and even pushed a workaround to our Qt - but forgot to turn it on!

However that was a red herring, as I was still unable to login.

While I was inside plasma I fixed the remaining broken applet and started doing what I should have done from the beginning - analyzing the problem.

I saw that when the login stopped progressing, there was the kwapper4 process fully occupying one of the cores. The hotuser DTrace script told me it spent all the time inside the getDisplay() function. I then attached dbxtool and saw that it's looping these two lines:

   while((i = strchr(result, ':')))
     *i = '_';
That was weird. I started checking the documentation of strchr to see if there might be some difference between its behavior on Linux and Solaris and found nothing. Then I noticed that the code behaves correctly when I remove all the build options and after a handful of iterations I had the culprit - -xbuiltin=%all ... As the Studio documentation says - "Note that these substitutions can cause the setting of errno to become unreliable. If your program depends on the value of errno, avoid this option." and that's exactly what was happening. 
 
I removed the option from the whole kde-solaris repository, as it's probably only safe to use when one has the code under full control, which is not our case.

Now I'm able to log into KDE again:






Since KDE 4.8 will be released within several hours, I'll wait with publishing the binary packages
for the final release.




Thursday, January 12, 2012

Kindle

It's about six months since I got myself a Kindle 3 and I have to say I'm very happy with this device. I read mostly English books and I just started with French ones.

The cool thing when reading stuff that's not in my mother tongue is that it does not feel like a complete waste of time, even when it's just a shallow entertaining title :-)

Here's the list of books I've finished so far:
Jerry Ahern: Survivalist: Total War, The Nightmare Begins, The Quest, The Doomsayer, The Web, The Savage Horde, The Prophet, The End Is Coming, Earth Fire
Alfred Assolant: Aventures merveilleuses mais authentiques du capitaine Corcoran
Tom Clancy: Rainbow Six
Arthur Conan Doyle: The Adventures of Sherlock Holmes
Charles Dickens: A Christmas Carol
Alexandre Dumas: Le comte de Monte-Christo Tome I
Frederick Forsyth: The Dogs of War, SSN
Thomas More: Utopia
Sax Rohmer: The Insidious Dr. Fu Manchu
Lemony Snicket: A series of unfortunate events: The Bad Beginning, The Reptile Room, The Wide Window, The Miserable Mill, The Austere Academy, The Ersatz Elevator, The Vile Village, The Hostile Hospital
Jules Verne: Robur le Conquerant



Friday, December 23, 2011

Calligra 2.4 beta 5 on Solaris

Calligra just became buildable again. There's just a handful of patches needed when building with Solaris Studio 12.3 and most of them are already applied in upstream, thanks to helpful Calligra developers.
The updated spec is available in the kde4-solaris repo.






Tuesday, November 1, 2011

Qt autotests - SFE vs KDE4

Qt comes with an extensive number of self tests and it's interesting to run them from time to time. In the FOSSqt.spec file of the kde4-solaris project, they can be turned on by defining run_autotests to 1, similarly in the SFEqt-gpp.spec of our SFE brethren.
A great number of them is failing on Solaris for various reasons - be it compiler issues, code bugs, or anything else, there's simply too many failures to demotivate anyone from trying to fix it.
So I thought it might be more interesting to compare the results from our build and SFE's - that way the difference would be more or less based on compiler differences (SFE uses gcc) and not anything else.

So here comes the comparison of the results for Qt 4.7.4:

Our Qt ran 491 tests, SFE's 489. There were 77 differences.

17 of the differences were irrelevant (difference in pointer address, test duration, slightly different messages, etc.). This includes tst_bic, tst_gestures, tst_maketestselftest, tst_modeltest, tst_q_func_info, tst_qcontiguouscache, tst_qdbusperformance, tst_qelapsedtimer, tst_qgraphicsitem, tst_qmainwindow, tst_qmenu, tst_qmutex, tst_qobjectperformance, tst_qscriptjstestsuite, tst_qscriptv8testsuite

36 cases where we fail and SFE passes: tst_collections,
tst_compiler (mere prejudice, we should try to override the stupid #if defined(Q_CC_SUN) there),
tst_mediaobject (something's wrong with our phonon),  
tst_q3sqlcursor, tst_q3sqlselectcursor, tst_qitemmodel, tst_qsql, tst_qsqldatabase, tst_qsqldriver, tst_qsqlquery, tst_qsqlquerymodel, tst_qsqlrelationaltablemodel, tst_qsqltablemodel, tst_qsqlthread, (hm, sqlite not set up properly),
tst_qaccessibility (a big fail here),
tst_qapplication (may be caused just by some difference in how the tests were run),
tst_qdatetime, tst_qdatetimeedit (caused by different environment when running the test - need to run it in the CET timezone),
tst_qdom, tst_qtextcodec, tst_qxmlsimplereader (mmm, asian encodings!),
tst_qgraphicsscene (this one is weird),
tst_qicoimageformat, tst_qicon, tst_qimage, tst_qimagereader, tst_qimagewriter, tst_qpixmap (deserves investigation, image format support),
tst_qmake (weird, need to have a look - perhaps bad mkspec used?)
tst_qmovie
tst_qnetworkconfiguration, tst_qnetworkconfigurationmanager, tst_qnetworksession (!)
tst_qwebpage
tst_uic, tst_uic3 (likely QTBUG-21523)


2 tests that SFE builds but we don't: tst_qdbusmarshall (QTBUG-22106), tst_qtconcurrentmap (QTBUG-12987)

4 tests that we build but SFE doesn't: tst_guiapplauncher, tst_qglthreads, tst_qwidget_window, tst_qwidget

20 tests where SFE fails while we pass:
tst_qabstractslider
tst_qcolumnview
tst_qcompleter
tst_qdialog
tst_qeventloop
tst_qfilesystemmodel
tst_qgl
tst_qglbuffer
tst_qgraphicsproxywidget
tst_qgraphicstransform
tst_qgraphicsview (not really a pass, but a few more tests are run in our build)
tst_qmdiarea
tst_qmessagebox (X Error: BadWindow)
tst_qprocess
tst_qreadwritelock
tst_qscriptengine
tst_qstring (no wide character support in the g++ build? Strange ... )
tst_qthread
tst_qtimeline
tst_xmlpatternsdiagnosticsts


It looks like the tests that included some performance measurements (tst_qcontiguouscache, tst_qdbusperformance, tst_qmutex, tst_qprocess) show better numbers for our bits, but I'd be far from interpreting it in that way. Both tests were run in a VirtualBox environment and the load on the host was quite different on the two occasions.


Webrev of the results (to save space only the udiff diffs were preserved)
The results bzipped
The tests source for reference

Thursday, September 1, 2011

KDE 4.7.0 with Solaris Studio 12.3 beta

KDEpim, the last package of the KDE 4.7.0 suite I care for (bindings never really worked and I've given up hope there) just built using the Solaris Studio 12.3 beta compiler.
Unfortunately, just as with Studio 12.1, one cannot login into the KDE session, it freezes somewhere in the splash screen, but the apps seem to be running fine when launched from GNOME.




Tuesday, August 9, 2011

4W LED bulb from DX

I got my hands at the 4W LED bulb from DealExtreme.
I put it to a directional reading lamp that normally hosts a 60W incandescent and the result was not really satisfying.
While the reviews at DX (most of them apparently written by the seller) say the light output is the same as a 40W incandescent, this is simply not true. Unfortunately I don't have any 25W nor 40W bulbs to compare, but I don't doubt a 25W one would still outshine it.
With the LED bulb the lamp can really be only used for reading and nothing more, but it's good enough at that (if you're close enough). Another plus is that it fits well in the lamp - a fluorescent compact bulb would be unacceptable here and there's no heat and no risk of broken glass in case of an accident.

Below are pictures of a white wall taken with Canon A85 in manual mode, using the same white balance, aperture and exposure values. (The spot in the top right is a defect that developed in the past year or so, I just don't have the A590 at hand ATM)

As a ghetto scientific method of light output measurement I also took a look at the histograms that GIMP kindly provides. It looks like the LED bulb is very weak in the blue part of the spectrum and the median value 2.5x higher (likely even more as part of the red channel is burned out in the 60W one) for the incandescent supports my estimate that the light output is at best comparable to a 25W incandescent.

4W LED

60W incancescent
4W histogram

60W histogram

Saturday, July 16, 2011