Sunday, May 31, 2009

The first sunbath of 2009

Yes. A little late, maybe.

I need to get my skin ready for Crete's sun and just one week is left. Precautions must be taken and the block where I live is equipped with a beautiful pool in the middle of a carefully looked after lawn.

My masochistic ego came out and at two o'clock in the afternoon I wore my bathing costume and went to the lawn. The day was perfect: the sun was burning but many clouds walking in the sky contributed to many 5 minutes' breaks during which a fresh wind gave relax to the skin. A couple of cold showers every thirteen minutes also helped to keep my skin temperature at a reasonable level. A couple of hours later I returned home, had the last cold shower and I'm now preparing to go out and drink a beer.

Folks, this is life: I was missing sunny days a lot!

Holidays in Crete

Have you ever thought about about the oldest greek civilization, the Minoans? Have you ever daydreamed about Knossos palace, Theseus, the Minotaur, the labyrinth, or the escape from Crete of Daedalus and Icarus?

Well, I've done many times and it was time for me to visit Crete. I'm very excited at the idea of returning to Greece and Crete just seems the right choice to spend this week of June. Crete is the 5th largest island of the Mediterranean Sea after Sicily, Sardinia, Cyprus and Corsica. In common imagery, Crete is the homeland of the eldest Greek civilization, the Minoans, some myths of whom got to us through Homer's Odyssey and Greek mythology.

We'll arrive at the Chania (Χανιά) Airport next Saturday in the morning. We'll rent a car and hit the road to Rethymno (Ρέθυμνο), where we'll we have dinner before reaching our destination, Panormos, a small Venetian-style village at 20 km. from Panormos.

Unfortunately, we'll stay in Crete just 7 days, which are probably the required minimum to begin to feel the place and to start to forget Madrid's M{30,40,42,50}. I haven't planned the vacations with full details, yet, but at a very minimum I want to pay a visit to Rethymnon, Heraklion and the Knossos' palace archaeological site. Also, I want to spend one day on a wild beach on the south of the Island. The only things I'll bring from Spain will be a good selection of sun and after-sun creams to protect and quench the thirst of my skin.

There will be no cellular phone, no computer. Every silicon-based device will be banned with the only exception of the GPS.

I'm really looking forward going away from Madrid!

Monday, May 11, 2009

Sleepless nights in Brussels

I really hoped that the next time I'd visit Brussels would be on vacations but Murphy's law never fail and my colleagues called me for help, and there I flew.

Long story short, because I don't even feel like talking about Microsoft SQL Server: performance of a brand-new system was really bad (well, nothing strange, that's why we had planned performance and stress tests...) and deadlocks started to appear.

So here I am, and this morning it's the new system Big Bang. A couple of sleepless night profiling and optimizing the application and everything seems ready to go.

Friday, May 8, 2009

Sparing disk space with ZFS clones while setting up a developer environment for multiple users

I have got some Solaris 10 workstations which are shared by a bunch of users which daily develop their application in the native Solaris 10 OS. Every user has to be able to log in in whichever machine and use his own environment. For this reason we took the usual approach of setting up NFS remote mounting of home directories and managing user accounts in an LDAP.

The developers also use a virtualized Windows and a virtualized Debian GNU/Linux during their duties and the initial deploy of the workstations didn't take into account the viability of accessing via NFS files as big as xVM hard disks. Replicating hard disk images was an issue and saving workstations hard disk space was another: with an average 15 GB per hard disk (OS and applications fully configured), per OS, per user, the 200 GB hard disk that equips the workstations seemed insufficient.

In this case, and in all the cases where you can share at least an initial set of data, ZFS helped us solving this problem. ZFS clones are filesystems generated from a snapshot of another ZFS filesystem. Initially a clone consumes no space and, as modifications starts to be applied, it begin to diverge from the snapshot it was generated from and starts allocating space. In our case, I snapshotted the initial installation of Sun xVM VirtualBox, I created a clone per user and set the mountpoint of the ZFS filesystem into the user home directory:
# zfs snapshot virtualbox/installation/dir@initial
# zfs clone virtualbox/installation/dir@initial virtualbox/users/name-0
# zfs clone virtualbox/installation/dir@initial virtualbox/users/name-n
# zfs set mountpoint=/export/name-0/.VirtualBox virtualbox/users/name-0
# zfs set mountpoint=/export/name-n/.VirtualBox virtualbox/users/name-0
ZFS clones spared me a lot of troubles and, moreover, every user has got a dedicated filesystems for its VirtualBox with all of the advantages provided by ZFS such as snapshots, restores and backups. We used the same approach to provide a common set of low-volatility filesystems to our users such as big SVN repositories and documentation directories.

Thursday, May 7, 2009

The perfect guide to the trash bin

This morning, as usual, I had my cup of coffee and started reading the press and one of my favorites, the real newspaper must-read is Beppe Severgnini's Italians. Today's article is titled The perfect guide to the trash bin. I'll quickly translate it here.

Safe driving to the trash bin. Or: how to write a kamikaze email, doomed to crash into the "Deleted Items". Few lines are sufficient, containing the right terms, to guarantee null attention and, with some effort, even a certain resentment on the unaware addressee. Some examples, taken from the first lines of unsolicited emails, received in a few hours. The final number (in brackets) indicates the time spent in my inbox.

"In Rome May 14th the guru of marketing..." (3") In Rome in May it seems that everything happens (as in Milan in October), and this is a handicap for the (reckless) sender. The words "guru" and "marketing", together, work as a shot gun in a herd of cats: all on the run!

"Dear Journalist, enclosed the press release in question that I hope will be of interest to Your newspaper. Do not hesitate to contact me for more information" (7"). None of my coworkers, to my knowledge, has never contacted the author of such press releases. Indeed, no: I believe it happened, on March 30 2007, but the news was never confirmed.

"Dearest, I am happy to announce an appointment within the cycle of meetings..." (2")
"Dearest" is written in blue, "etc. I am happy..." in black: the apparent copy-and-paste increases mistrust, made high by the "cycle of meetings" (a circular formation that Alighieri thought to include in his Inferno).

"Invitation - Only for extraordinary creatures - an unmissable event - An opportunity to celebrate the prestigious..." (4")
"Unmissable", "prestigious" and "extraordinary" are three spy adjectives: when you read them, red alert! They replaced "exclusive" and "VIP", in vogue during the nineties and now confined in the provincial clubs and resorts.

"Dear friends, I must inform you that applications are open for..." (1")
Applications will be opened at the speed with which you close certain emails: it's an ongoing challenge. I must tell you that this was an interesting case: it was, in fact, a dance course ("The best student will be invited to exhibit in Bulgaria!").

''LET'S BUILD THE TURNING POINT - Dear Doctors, attached to the present we send you the number of May 2009'' (8 ", the surprise has caused me to reread).
''LET'S BUILD THE TURNING POINT'': just the private motorway companies are authorized to use such a language. Then: please avoid Capitals, FOR GOD'S SAKE! At last: how do they know that we're all ''Doctors''? And those who, with effort, have succeeded in not being it?

Wednesday, May 6, 2009

Housekeeping after live upgrading

As I told on a previous blog entry, I just live upgraded my Solaris Express Community Edition from build 110 to build 113. The live upgrade experience was very good: rapid, painless and pretty secure.

At the end of the live upgrade process, you are informed about the upgrade operation:
  • upgraded packages (/var/sadm/system/logs/upgrade_log)
  • failed upgrades (/var/sadm/system/data/upgrade_failed_pkgadds)
  • required housekeeping steps (/var/sadm/system/data/upgrade_cleanup)
In this case only package SUNWttf-fonts-core failed with the following message (I had to modify for blogger not to screw up the HTML):
Doing pkgadd of SUNWttf-fonts-core to /
pkgadd: ERROR: unable to create package object (/a/usr/openwin/lib/X11/fonts/TrueType/core).
file type (s) expected (d) actual
unable to remove existing directory at (/a/usr/openwin/lib/X11/fonts/TrueType/core)
32963 blocks
pkgadd: ERROR: unable to create package object (/a/usr/openwin/lib/X11/fonts/TrueType/core).
file type (s) expected (d) actual
unable to remove existing directory at (/a/usr/openwin/lib/X11/fonts/TrueType/core)

Installation of (SUNWttf-fonts-core) partially failed.
A bit of investigation and the help of the OpenSolaris community showed that a bug (6833967) is causing the observed failure. The following bug is the guilty:
6810237 - SUNWxwfnt upgrade is broken in 109 due to issues with bad *ph files delivery
If you experience fonts-related problems, here are the steps suggested by the community:
yes | pkgrm -R /a SUNWxwcft SUNWxwoft SUNWxwfnt SUNWttf-fonts-core
rm -rf /a/usr/X11/lib/X11/fonts/
rm -rf /a/usr/X11/lib/X11/fonts/75dpi
rm -rf /a/usr/openwin/lib/X11/fonts/
rm -rf /a/usr/openwin/lib/X11/fonts/
yes | pkgadd -R /a -d /path/to/image/Solaris_11/
Product SUNWxwfnt SUNWxwoft SUNWxwcft SUNWttf-fonts-core
and, in the new ABE:
# rm /var/cache/fontconfig/*
# /usr/bin/fc-cache -f -s
I also tried to solve this problems observing the pkgmap file for that package. Near the end it says:
1 s none openwin/lib/X11/fonts/TrueType/core=../../../../../X11/lib/X11/fonts/TrueType/core
core, in my system, was an empty dir with some stale fonts.cache files. I just removed the directory and restored the link.

Cleaning up.
The last thing to do was examining the upgrade_cleanup file to apply the required cleanup operations. Basically, during live upgrade, two things are likely to happen:
  • Live upgrade does not replace a file because it had been modified
  • Live upgrade does replace a modified file and backs up the previous version
In both cases the administrator should examine the differences and apply the patches when necessary. In my case, for example, I had reconfigured the shipped Apache2 and simply had to check the differences between the two versions of the Apache2 configuration files.

Upgrading Solaris with live upgrade it's a pretty easy procedure if you're using ZFS for your root pool. I really hope that live upgrade will continue to be a feature of the next generation Solaris. In my opinion, Live Upgrade and ZFS rock.

Tuesday, May 5, 2009

Live upgrading a Solaris Express Community Edition

It would really be difficult for me to tell the feature I love most in Sun Solaris OS.

Today, trying to troubleshoot a font problem I'm experiencing, I decided to live upgrade my Solaris Express Community Edition from build 110 to build 113.

If you're interested in discovering the details of the Solaris features of the day, you could easily check the extensive official documentation. Let's say that Live upgrade lets you upgrade your OS while the system is running, creating an alternate boot environment. This process, which could be used with UFS, it's even easier with ZFS.

Check your tools.
The first thing you should do is installing the Live Upgrade packages from the Solaris distribution you're going to install. I'll repeat: The first thing you should do is installing the Live Upgrade packages from the Solaris distribution you're going to install. If you're installing from a DVD, just insert into the drive bay. If you just downloaded an ISO image you can just:
# mkdir /mnt/iso
# lofiadm -a /path/to/solaris/iso
[lofiadm will print on standard output a lofi device number such as /dev/lofi/n]
# mount -F hsfs -o ro /dev/lofi/n /mnt/iso
Now you can upgrade your tools:
# pkgrm SUNWlucfg SUNWluu SUNWlur
# pkgadd -d /mnt/iso/Solaris_your-version-here/Product SUNWlucfg SUNWluu SUNWlur
Creating a boot environment.
The creation of a boot environment is a straightforward process, which is pretty instantaneous on ZFS:
# lucreate -n BEName
I usually use snv_buildnum as my boot environments' name and in this case it's snv_113. If you want to check that everything's OK you can issue a:
# lustatus
and check the output to see if your new boot environment has been correctly initialized. If you check your ZFS file systems and snapshots, you'll notice something like this (don't look at used space because these boot environments have already been upgraded):
# zfs list
rpool 115G 113G 35.5K /rpool
rpool/ROOT 21.9G 113G 18K legacy
rpool/ROOT/snv_110 19.1G 113G 12.2G /
rpool/ROOT/snv_110/var 6.84G 113G 6.84G /var
rpool/ROOT/snv_113 2.82G 113G 11.8G /a
rpool/ROOT/snv_113/var 102M 113G 6.85G /a/var
You have a couple of brand new file systems for your new boot environment. Your output may vary because I decided to have /var on a separate file system.
# zfs list -t snapshot
rpool/ROOT/snv_110@snv_113 9.17M - 12.2G -
rpool/ROOT/snv_110/var@snv_113 1.94M - 6.84G -
What happened, basically, is that ZFS snapshotted your current boot environment and subsequently cloned it. That's ZFS in action! With traditional file systems, such as UFS, "snapshotting" or "cloning" the entire partition would have taken a great amount of time. With ZFS copy on write semantics, it takes fractions of a second and almost a null amount of additional storage.

Upgrading the boot environment.
The last, and longest, step in the procedure. I suggest you to read luupgrade man page but, basically, you can just issue a:
# luupgrade -u -n snv_113 -s /mnt/iso
and wait until the end. Please read luupgrade output, which usually is important, and save it to a file. You would probably need to revise it later. If everything went fine you can activate your new boot environment, reboot, and enjoy your new OS with just a:
# luactivate snv_113
# init 6
You will be told by luactivate but I'll repeat: use init or shutdown to reboot your system. Before switching boot environment, Solaris needs to execute the final configuration steps which are performed during a clean reboot.

The last suggestion.
Live Upgrade helps you upgrade your system without risk and downtimes but remember: time is a precious asset and I don't like to restart a long-running task because a remote connection has been reset. If you plan to live upgrade from a remote terminal, at least use screen or some equivalent tool. Don't lose your session!

Forewarned is forearmed.

In the next blog entry I'll tell you about housekeeping activities you must perform after live upgrading.

Monday, May 4, 2009

Enabling Dell Vostro Wifi network adapter on Solaris Express Community Edition (build 110)

I unfortunately had to configure a Dell Vostro laptop: the machine's not bad but as soon as I see the typical Broadcom {Solaris, Linux}-unsupported Wifi card I would start to scream and run away.

Configuring ndiswrapper on Linux is pretty straightforward: it's a small project which usually compiles without issues using the typical GNU toolchain of your preferred distro. If you use Debian you can recompile the ndiswrapper module for your kernel-of-the-day using modules-assistant without any pain.

Solaris is another beast and an NDIS-wrapper is being actively ported by the OpenSolaris Laptop community. Installation is not straight forward and I experienced some issues worth mentioning here.

Have you got the Windows drivers?
If you're planning to use an NDIS wrapper because your Wireless NIC is unsupported the first thing you need is the Windows driver. Take into account that the wrapper is meant to work with NDIS version 5.0 or above: Windows 2000 driver will probably work but best results will be accomplished with Windows XP and Windows 2003 Server drivers. Also, 32-bit drivers nowadays offer more stability than 64-bit drivers which, in many cases, does not even work as expected.

Have you got the right version of the tool chain?
Laptop community home page suggests the following:
  • GNU C Compiler v. 3.4.3 or superior
  • flex
Both are present on Solaris 10 in /usr/sfw/bin.

Have you got ON-specific build tool?
This is something that is indeed mentioned in the Laptop Community homepage. OpenSolaris 2008.11 provides them in /opt/onbld/bin but neither Solaris 10 nor Solaris Express Community Edition (as of build 110) ships them with the OS. If you're using such a system, download the SUNWonbld package at the OpenSolaris Download Center.

Get ndis.
Grab ndis source taking into account the version of the OS you're running. The Laptop Community page will suggest the correct version for the system you're running.

Build the driver.
The steps to build a driver are pretty straightforward. Let's start with the 32-bit version of the driver:
  • First unzip the ndis source tarball into some directory and then copy the 32-bit driver's inf and sys files into the i386 folder of the ndis distribution.
  • (Optional) Convert the inf file into a plain ASCII file with:
# iconv -f utf-16 -t ascii driver.inf > ndis.inf
  • Build the driver:
# make ndiscvt
# ./ndiscvt -i ndis.inf -s ndis.sys -o ndis.h
# make ndis
# cp bcmndis /kernel/drv/bcmndis
# make ndisapi
# cp ndisapi /kernel/misc
These steps will install the 32-bit bcmndis driver. This is where the official Laptop community page isn't clear, in my humble opinion. A 32-bit driver can be built while running a 64-bit kernel but it cannot be used that way. If you plan to use this driver you'll have to skip the following section and go directly to GRUB configuration for Solaris 32-bit.

Building a 64-bit driver.
If you've got the 64-bit version of the driver (you probably have in some installation CD and if you don't, check your PC vendor's home page) you can try and build a 64-bit version and see if it runs with Solaris. I had not so much luck with this Dell Vostro 1710, equipped with a Broadcom Wifi chip (14e4, 4315) but some cards are reported to work. To build a 64-bit version the steps are essentially the same:
  • Copy the 64-bit driver's inf and sys files into the amd64 folder of the ndis distribution.
  • Build the driver:
# make ndiscvt
# ./ndiscvt -i ndis.inf -s ndis.sys -o ndis.h
# make ndis
# cp bcmndis /kernel/drv/amd64/bcmndis
# make ndisapi
# cp ndisapi /kernel/misc/amd64
Try to use the driver.
Assuming everything went fine, you can now add your driver into your Solaris and try to use it. As explained, if you built a 32-bit only driver, you should run the 32-bit Solaris kernel. That said, you can type:
# add_drv -i '¨(pci-vendor-id, pci-device-id)¨'

The PCI IDs can be found by using scanpci or checking your hardware documentation. In the Dell Vostro 1710 case they were (pci14e4,4315).

Booting a 32-bit Solaris.
To boot a 32-bit Solaris the easiest approach is editing GRUB menu and adding a specific entry. In my case I added the following:
title Solaris Express Community Edition snv_110 X86
findroot (pool_rpool,0,a)
kernel$ /platform/i86pc/kernel/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/boot_archive
The Dell Vostro 1710 experience.
Well... I built both the 32 and the 64 bit drivers but unfortunately the 64-bit one panics my system immediately. So I'm booting a 32-bit Solaris when I need the wifi card and the 64-bit Solaris the rest of the times. I'm not very happy because rebooting is a pain and, moreover, the 32-bit system with wifi enabled sometimes crashes, even if I don't know why yet.

A strange font problem using Solaris Express Community Edition build 110 and Blastwave's packages

After live upgrading SXCE from build 104 to build 110 I started to experience a problem which makes it impossible to use some (current) Blastwave's packages.

After launch, xine immediately core dumps:
grey@solaris1:~$ xine
This is xine (X11 gui) - a free video player v0.99.4.
(c) 2000-2004 The xine Team.
xiTK WARNING(xitk_font_load_font:725): loading font "*-helvetica-*-i-*-*-12-*-*-*-*-*-*-*" failed, default and system fonts "xiTK received SIGSEGV signal, RIP.
Abort (core dumped)
Core file says:
grey@solaris1:~$ pstack core
core 'core' of 3361: xine
----------------- lwp# 1 / thread# 1 --------------------
c99d22a5 _lwp_kill (1, 6, 8043e18, c997ab7e) + 15
c997ab8a raise (6, 0, 8043e68, c9951ffa) + 22
c995201a abort (813b66c, 1, 23, 815a128, c9a50000, c9392a00) + f2
080e9829 ???????? (b, 0, 8043f50, 80e9718)
c99c01bf call_user_handler (b) + 2af
c99c03ef sigacthandler (b, 0, 8043f50) + df
--- called from signal handler with signal 11 (SIGSEGV) ---
c99447a0 strlen (813ae1c) + 30
c9992b90 fprintf (815a128, 813ae1c, a3c0730, 0, 816dce8, 815a128) + a8
080c514b xitk_font_load_font (321, 646f636e, 816e020, 816e027, 816e038, 816e040) + 9bb
09230064 ???????? ()
----------------- lwp# 2 / thread# 2 --------------------
c99cd049 __lwp_park (8159c90, 8159c78) + 19
c99c678d cond_wait_queue (8159c90, 8159c78, 0, c99c6c56) + 60
c99c6cce __cond_wait (8159c90, 8159c78, c8bdee70, c99c6d13) + 86
c99c6d21 cond_wait (8159c90, 8159c78, 813c040, c99c6d54) + 24
c99c6d69 pthread_cond_wait (8159c90, 8159c78, 0, 0, 0, 0) + 21
0811a763 ???????? (0, 0, 0, 0, 10300, 43560000)
4d580000 ???????? ()
----------------- lwp# 3 / thread# 3 --------------------
c99d0fe5 __nanosleep (c8a6ef90, c8a6ef88, 0, 10c11d08, 0, 1dcd6500) + 15
c9ac25b6 xine_usec_sleep () + 6a
----------------- lwp# 4 / thread# 4 --------------------
c99cd049 __lwp_park (82626d8, 82626c0) + 19
c99c678d cond_wait_queue (82626d8, 82626c0, c834ef28, c99c6976) + 60
c99c6b53 cond_wait_common (82626d8, 82626c0, c834ef28, c99c6d96) + 1eb
c99c6dee __cond_timedwait (82626d8, 82626c0, c834efb0, c99c6e80) + 66
c99c6e91 cond_timedwait (82626d8, 82626c0, c834efb0, c99c6ec4) + 27
c99c6edc pthread_cond_timedwait (82626d8, 82626c0, c834efb0, c834efb8, c834efb8, 82626c0) + 24
c9a9e38e ???????? ()
----------------- lwp# 5 / thread# 5 --------------------
c99d1d15 __pollsys (816d820, 1, 0, 0, 5, c920e000) + 15
c9977834 poll (816d820, 1, ffffffff, c90e69ca) + 4c
c90e6aa7 _XWaitForReadable (8169170, c920e000, c819ee64, c90e79ff) + eb
c90e7b40 _XReply (8169170, c819ee7c, 0, 1) + 2c8
c90f2df2 XSync (8169170, 0, 48003bb, 8262d58, a548800, 0) + 72
c81b48cb ???????? ()
----------------- lwp# 6 / thread# 6 --------------------
c99cd049 __lwp_park (8a9b6ec, 8a9b6d4) + 19
c99c678d cond_wait_queue (8a9b6ec, 8a9b6d4, 0, c99c6c56) + 60
c99c6cce __cond_wait (8a9b6ec, 8a9b6d4, c807eed4, c99c6d13) + 86
c99c6d21 cond_wait (8a9b6ec, 8a9b6d4, c807ef10, c99c6d54) + 24
c99c6d69 pthread_cond_wait (8a9b6ec, 8a9b6d4, 8a9b6c8, 8a9b6fc, c807ef10, c99c5258) + 21
c9aaaf08 ???????? (0, 0, 0, 0, 10300, 43560000)
4d580000 ???????? ()
----------------- lwp# 7 / thread# 7 --------------------
c99cd049 __lwp_park (8262f70, 8262f58) + 19
c99c678d cond_wait_queue (8262f70, 8262f58, c7f4ed24, c99c6976) + 60
c99c6b53 cond_wait_common (8262f70, 8262f58, c7f4ed24, c99c6d96) + 1eb
c99c6dee __cond_timedwait (8262f70, 8262f58, c7f4eda0, c99c6e80) + 66
c99c6e91 cond_timedwait (8262f70, 8262f58, c7f4eda0, c99c6ec4) + 27
c99c6edc pthread_cond_timedwait (8262f70, 8262f58, c7f4eda0, 8a7c300, 0, 49fee5a8) + 24
c9aa8231 ???????? ()
----------------- lwp# 8 / thread# 8 --------------------
c99cd049 __lwp_park (8fd8d1c, 8fd8d04) + 19
c99c678d cond_wait_queue (8fd8d1c, 8fd8d04, 0, c99c6c56) + 60
c99c6cce __cond_wait (8fd8d1c, 8fd8d04, c7e4fee4, c99c6d13) + 86
c99c6d21 cond_wait (8fd8d1c, 8fd8d04, 8fd8cf0, c99c6d54) + 24
c99c6d69 pthread_cond_wait (8fd8d1c, 8fd8d04, 0, 8fd8d04, c9adccb8, 8fd8cf0) + 21
c9aa0edc ???????? (a41ce40, 1, 82651f0, 8bdf660, 8a7cd80, 8fd8cf0)
08bdf430 ???????? (0, 823e788, 815c688, 815c6b0, 817ab50, 0)
08203230 ???????? (c9a9f760, c9a9f23c, c9a9f3c4, c9a9f9d8, c9a9faac, c9a9f6e8)
c9a9f54c ???????? (892c2474, e818245c, 19fc, dc38c381, 6c890003, f6852424)
8b1c2474 ???????? ()
----------------- lwp# 9 / thread# 9 --------------------
c99d0fe5 __nanosleep (c7d3ef68, c7d3ef60, 0, 0, 0, f4240) + 15
c9ac25b6 xine_usec_sleep (c9aa84a0, c9aaa724, c9aaa738, c9aaa72c, c9aaa7d4, c9aaa118) + 6a
c9aa9fd4 ???????? (4893442, 5a10ff24, 768dc3, 3118ec83, 1bac0, 7c890000)
8b082454 ???????? ()
----------------- lwp# 10 / thread# 10 --------------------
c99cd049 __lwp_park (99f8664, 99f864c) + 19
c99c678d cond_wait_queue (99f8664, 99f864c, 0, c99c6c56) + 60
c99c6cce __cond_wait (99f8664, 99f864c, c7c1eed4, c99c6d13) + 86
c99c6d21 cond_wait (99f8664, 99f864c, 0, c99c6d54) + 24
c99c6d69 pthread_cond_wait (99f8664, 99f864c, 99f8640, 99f8674, c7c1ef10, c99c5258) + 21
c9aaaf08 ???????? (0, 0, 0, 0, 10300, 43560000)
4d580000 ???????? ()
----------------- lwp# 11 / thread# 11 --------------------
c99cd049 __lwp_park (9b6056c, 9b60554) + 19
c99c678d cond_wait_queue (9b6056c, 9b60554, 0, c99c6c56) + 60
c99c6cce __cond_wait (9b6056c, 9b60554, c7b1ff70, c99c6d13) + 86
c99c6d21 cond_wait (9b6056c, 9b60554, c99c56da, c99c6d54) + 24
c99c6d69 pthread_cond_wait (9b6056c, 9b60554, c9adccb8, 9b60554, 9b60550, 1) + 21
c9aaedfc xine_event_wait (0, 0, 300, 43560000, 0, 0) + 38
43560000 ???????? ()
----------------- lwp# 12 / thread# 12 --------------------
c99cd049 __lwp_park (9b6109c, 9b61084) + 19
c99c678d cond_wait_queue (9b6109c, 9b61084, 0, c99c6c56) + 60
c99c6cce __cond_wait (9b6109c, 9b61084, c7a20ed0, c99c6d13) + 86
c99c6d21 cond_wait (9b6109c, 9b61084, 0, c99c6d54) + 24
c99c6d69 pthread_cond_wait (9b6109c, 9b61084, 0, 9b61084, c9adccb8, 9b61070) + 21
c9aa0edc ???????? (0, 0, 82651f0, 9b61070, 0, 9f83cc8)
09b60f60 ???????? (0, 823e788, 815c688, 815c6b0, 817ab50, 0)
08203230 ???????? (c9a9f760, c9a9f23c, c9a9f3c4, c9a9f9d8, c9a9faac, c9a9f6e8)
c9a9f54c ???????? (892c2474, e818245c, 19fc, dc38c381, 6c890003, f6852424)
8b1c2474 ???????? ()
----------------- lwp# 13 / thread# 13 --------------------
c99cd049 __lwp_park (9fa5134, 9fa511c) + 19
c99c678d cond_wait_queue (9fa5134, 9fa511c, 0, c99c6c56) + 60
c99c6cce __cond_wait (9fa5134, 9fa511c, c7921f70, c99c6d13) + 86
c99c6d21 cond_wait (9fa5134, 9fa511c, c99c59b2, c99c6d54) + 24
c99c6d69 pthread_cond_wait (9fa5134, 9fa511c, c9adccb8, fe000, 9fa5118, 1) + 21
c9aaedfc xine_event_wait (0, 0, 300, 43560000, 0, 0) + 38
43560000 ???????? ()
----------------- lwp# 14 / thread# 14 --------------------
c99cd049 __lwp_park (9fa5c64, 9fa5c4c) + 19
c99c678d cond_wait_queue (9fa5c64, 9fa5c4c, 0, c99c6c56) + 60
c99c6cce __cond_wait (9fa5c64, 9fa5c4c, c7822ed0, c99c6d13) + 86
c99c6d21 cond_wait (9fa5c64, 9fa5c4c, 9fa5c38, c99c6d54) + 24
c99c6d69 pthread_cond_wait (9fa5c64, 9fa5c4c, 0, 9fa5c4c, c9adccb8, 9fa5c38) + 21
c9aa0edc ???????? (0, 0, 82651f0, 9fa5c38, 0, a39f158)
09fa5b28 ???????? (0, 823e788, 815c688, 815c6b0, 817ab50, 0)
08203230 ???????? (c9a9f760, c9a9f23c, c9a9f3c4, c9a9f9d8, c9a9faac, c9a9f6e8)
c9a9f54c ???????? (892c2474, e818245c, 19fc, dc38c381, 6c890003, f6852424)
8b1c2474 ???????? ()
----------------- lwp# 15 / thread# 15 --------------------
c99d1d15 __pollsys (c766ebf0, 1, c766eca4, 0) + 15
c997ce11 pselect (7, c766ef40, 0, 0, c766eca4, 0) + 199
c997d1e6 select (7, c766ef40, 0, 0, c766ecd8, 0) + 78
080a4f1c ???????? (0, 0, 0, 0, 0, 0)
00000000 ???????? ()
----------------- lwp# 16 / thread# 16 --------------------
c99cd049 __lwp_park (a3c13f4, a3c13dc) + 19
c99c678d cond_wait_queue (a3c13f4, a3c13dc, 0, c99c6c56) + 60
c99c6cce __cond_wait (a3c13f4, a3c13dc, c756ff90, c99c6d13) + 86
c99c6d21 cond_wait (a3c13f4, a3c13dc, c99cc027, c99c6d54) + 24
c99c6d69 pthread_cond_wait (a3c13f4, a3c13dc, c99cacb8, c9a50000, fe000, 0) + 21
0811cb99 ???????? (c8ed7a00)
c99ccff0 _lwp_start (c8ed7a00, 0, 0, c9a50000, fe000, 0)
----------------- lwp# 17 / thread# 17 --------------------
c99d0fe5 __nanosleep (c6e0ef90, c6e0ef88, 0, 13d5084, 0, 5f5e100) + 15
c9ac25b6 xine_usec_sleep (0, 0, 0, 0, 0, 8ad3e18) + 6a
4d580000 ???????? ()
The same problem shows up with other packages such as Gnucash. I also thought something went wrong during the live upgrade process so I installed SXCE build 110 from scratch on another machine and the problem still appears. I didn't upgrade to build 111 or 112 because of the nVidia problem I read about and I'm now downloading build 113 to see if the problem still persists.

Sun xVM VirtualBox v. 2.2: USB support on {Open}Solaris works and HP's multifunction printers work like a charm.

As I told you on another post I had some problems with VirtualBox on a Solaris host: missing USB support not only meant that USB devices were unmanageable, it also meant that other software (such as HP's solution center for multifunction printers) wouldn't even install because of that missing feature. I planned to use my printer though the Ethernet interface but the software wouldn't install.

Until I installed Sun xVM VirtualBox v. 2.2. Experimental USB support was sufficient for HP's software to install and the printer worked perfectly both from Windows and Linux guests. Direct access to the printer by setting up a filter was straight forward.

A note about networking configuration: HP's solution center uses a certain number of TCP and UDP ports to communicate with the multifunction device. The printer documentation was detailed and setting up a firewall or a set of NAT rules wouldn't be hard. By the way, once I realized that the problems I was experiencing with the scanner were due to VirtualBox's default network configuration, I decided to change the guest's network settings.

If you're a Solaris Express user who regularly updates its system, you'd probably read about Crossbow project. Crossbow project, which was integrated in Nevada build 105, aims to provide the building blocks for network virtualization on Solaris hosts. The first thing I thought about was, indeed, creating a virtual NIC. But the solution was easier than that and it's called "Bridged networks" on VirtualBox's jargon. You simply change the adapter configuration for you VirtualBox host from NAT to Bridged and you optionally choose the physical NIC you want to bridge upon, in the case your system has more than one. Boot your guest OS and you'll have a virtual NIC at your disposal, without the limitations of the NAT configuration. And if you are communicating with the "outside world", such as a network multifunction printer or some CIFS client, your guest OS' NIC will appear just as a physical NIC.

The only caveat to use this technique is that, on Solaris hosts, Virtual NICs and VirtualBox bridged networking isn't implemented (yet) on top of a Wireless NIC.