Concert review: Alice In Chains

I am a huge Alice In Chains fan, and have traveled the country several times in the past few years to see Jerry Cantrell perform live. When I heard they were coming to my home town to play a show, I did everything it took to get tickets, and then had to patiently wait eight weeks to see them live. :( That my friend is hard to do when you love a band as much as I love Alice In Chains, but the eight weeks eventually passed and I got my chance to see them rock out last night!

The band took the stage a little after 10pm, and they started the show with an amazing version of “Again.” Jerry was on fire, William sounded great on lead vocals (he is definitely no Layne Staley, but sounded awesome nonetheless), and Sean and Mike were spot on with drums and bass. After the band finished the song Again, they played incredible versions of “Bleed The Freak,” “Grind,” “It Ain’t Like That,” “Junkhead,” “Nutshell,” (my personal favorite!) “Them Bones,” “Dam That River,” and “Rain When I Die.”

After they finished up Rain When I Die, they left the stage to allow the roadies to setup the stage for their acoustic “unplugged” set. When they eventually reappeared, they had acoustic guitars in hand, and proceeded to play unplugged versions of “Don’t Follow,” “Brother,” “Killer Is Me,” “No Excuses,” “Got me Wrong,” and “Down In A Hole.” The acoustic set they played was f*&^%$# awesome, and it looked and sounded identical to their appearance on MTV unplugged (albeit no Layne).

One they finished playing the songs they wanted to play on acoustic guitar, the roadies once again appeared to clean up the stage, and the band came back out to play “Sludge Factory,” “We Die Young,” “Heaven Beside You,” Angry Chair” and the universal classic “Man In The Box.” The crowd was loving every single minute of the show, and when the band played “Rooster” and “Would?” for their encore, you could clearly see that every person in attendance was there because they loved Alice In Chain’s music.

This was definitely one of the best shows I have ever attended, and it ranks right up there with the time I saw Jerry Cantrell play a Halloween show in Chicago (he dressed up as dead Elvis). Alice In Chains is an incredible band, and getting a chance to see them regroup in honor of Layne made me feel good (they played a bunch of outtakes from when Layne was alive, which almost made me cry). If you get a chance to see these guys, you WILL NOT be disappointed! I had such an awesome time at the show, I am thinking about flying to NY to see them again later this month.

Patching PHP on Solaris hosts (all patch utilities are not created equal!)

While attempting to use the default Solaris patch command to apply the suhosin patch to the PHP source code, the patch command bombed out:

$ /bin/patch -p0 < suhosin-patch-5.1.6-0.9.5.patch
Looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
The next patch looks like a unified context diff.
File to patch:

The unified diff contained the name of each file to patch, so I decided to see if the GNU patch utility (which is installed in /bin on most Solaris hosts) worked:

$ /bin/gpatch -p0 < suhosin-patch-5.1.6-0.9.5.patch
patching file php-5.1.6/configure
patching file php-5.1.6/configure.in
patching file php-5.1.6/ext/standard/basic_functions.c
patching file php-5.1.6/ext/standard/dl.c
patching file php-5.1.6/ext/standard/file.c
patching file php-5.1.6/ext/standard/file.h
patching file php-5.1.6/ext/standard/info.c
patching file php-5.1.6/ext/standard/syslog.c
patching file php-5.1.6/main/fopen_wrappers.c
patching file php-5.1.6/main/main.c
patching file php-5.1.6/main/php_config.h.in
patching file php-5.1.6/main/php.h
patching file php-5.1.6/main/php_logos.c
patching file php-5.1.6/main/snprintf.c
patching file php-5.1.6/main/spprintf.c
patching file php-5.1.6/main/suhosin_globals.h
patching file php-5.1.6/main/suhosin_logo.h
patching file php-5.1.6/main/suhosin_patch.c
patching file php-5.1.6/main/suhosin_patch.h
patching file php-5.1.6/main/suhosin_patch.m4
patching file php-5.1.6/sapi/apache/mod_php5.c
patching file php-5.1.6/sapi/apache2filter/sapi_apache2.c
patching file php-5.1.6/sapi/apache2handler/sapi_apache2.c
patching file php-5.1.6/sapi/cgi/cgi_main.c
patching file php-5.1.6/sapi/cli/php_cli.c
patching file php-5.1.6/TSRM/TSRM.h
patching file php-5.1.6/TSRM/tsrm_virtual_cwd.c
patching file php-5.1.6/TSRM/tsrm_virtual_cwd.h
patching file php-5.1.6/win32/build/config.w32
patching file php-5.1.6/Zend/Makefile.am
patching file php-5.1.6/Zend/zend_alloc.c
patching file php-5.1.6/Zend/zend_alloc.h
patching file php-5.1.6/Zend/zend.c
patching file php-5.1.6/Zend/zend_canary.c
patching file php-5.1.6/Zend/zend_compile.c
patching file php-5.1.6/Zend/zend_compile.h
patching file php-5.1.6/Zend/zend_constants.c
patching file php-5.1.6/Zend/Zend.dsp
patching file php-5.1.6/Zend/zend_errors.h
patching file php-5.1.6/Zend/zend.h
patching file php-5.1.6/Zend/zend_hash.c
patching file php-5.1.6/Zend/zend_llist.c
patching file php-5.1.6/Zend/ZendTS.dsp

GNU patch worked flawlessly, which leads me to wonder if the Solaris patch command requires additional flags to process unified diffs similar to this. I have had a number of issues arise with the default Solaris patch utility over the years, and for some reason it doesn’t seem to process unified diffs as smoothly as the GNU patch utility. In the interm, I aliased patch to gpatch to avoid these types of issues. :)

Monitoring DBUS events

While debugging a goofy GNOME / USB interoperability issue this week, I came across the dbus-monitor program. Dbus-monitor allows you to view messages as they are sent on the DBUS message bus, which can be amazingly useful for debugging hardware and software interoperability issues. To print the messages that are traveling on the system message bus (DBUS defines two types of buses, one is the system bus, the other is a per session bus), dbus-monitor can be run with the “-system” option:

$ dbus-monitor –system

signal sender=org.freedesktop.DBus -> dest=:1.4 interface=org.freedesktop.DBus; member=NameAcquired
 0 string ":1.4"
signal sender=:1.0 -> dest=(null destination) interface=org.freedesktop.Hal.Manager; member=DeviceRemoved
 0 string "/org/freedesktop/Hal/devices/volume_label_"
signal sender=:1.0 -> dest=(null destination) interface=org.freedesktop.Hal.Manager; member=DeviceAdded
 0 string "/org/freedesktop/Hal/devices/volume_label_"

In this example, you can see that two message were sent when a hardware device was added and removed from the system. After reading through a slew of documentation, I am finally starting to understand how all of the GNOME packages tie in one another. Yikes!

Renaming a Solaris zone

While reviewing the list of zones on one of my Solaris hosts, I noticed that I accidentally assigned the name “cone3” to a zone:

$ zoneadm list -vc

  ID NAME             STATUS         PATH                           BRAND
   0 global           running        /                              native
  11 zone1            running        /zones/zone1                   native
   - centos           installed      /zones/centos                  lx
   - template         installed      /zones/template                native
   - cone3            configured     /zones/zone3                   native
   - centostest       configured     /zones/centostest              lx

While the name cone3 sounds interesting (for some reason cone3 reminds me of the coneheads movie), I originally intended for the zone to be called “zone3.” To assign the correct name to the zone, I fired up the zone configuration utility (zonecfg), and set the ‘zonename’ variable to the correct value:

$ zonecfg -z cone3
zonecfg:cone3> set zonename=zone3
zonecfg:zone3> commit
zonecfg:zone3> exit

$ zoneadm list -vc

  ID NAME             STATUS         PATH                           BRAND
   0 global           running        /                              native
  11 zone1            running        /zones/zone1                   native
   - centos           installed      /zones/centos                  lx
   - template         installed      /zones/template                native
   - zone3            configured     /zones/zone3                   native
   - centostest       configured     /zones/centostest              lx

Much better!

Solaris virtualization slides

I gave a talk tonight on Solaris virtualization technologies, and posted my slides to prefetch.net. The presentation covered Solaris zones, Linux branded zones, project Crossbow, and shows how to configure each technology. The next two years will be exciting for members of the OpenSolaris community, since there are NUMEROUS awesome technologies currently in development (I am looking forward to seeeing Xen Dom0 and DomU support in an official Solaris 10 update!).