The attached patch applied to the /etc/perl/GNUpod/SysInfo.pm file installed by gnupod-tools package version 0.99.7-2 fixes the hang for me.
The patch was derived from the 0.99.7 to 0.99.8 patch set in git. It was odd, but the package also provides a SysInfo.pm file in /usr/share/perl5/GNUpod/SysInfo.pm ... which I didn't need to change. -- James Cameron http://quozl.linux.org.au/
diff --git a/src/ext/SysInfo.pm b/src/ext/SysInfo.pm index ceaeef8..9b56222 100644 --- a/src/ext/SysInfo.pm +++ b/src/ext/SysInfo.pm @@ -94,7 +94,8 @@ sub __GrabFWGUID_LINUX { opendir(BLOCKDIR, "/sys/block") or return undef; while (my $dirent = readdir(BLOCKDIR)) { next if $dirent eq '.'; next if $dirent eq '..'; - open(UDEV, "-|") or exec("udevinfo", "--name", $dirent, "--query", "env"); + next unless $dirent =~ /^sd/; + open(UDEV, "-|") or exec("/sbin/udevadm", "info", "--name", $dirent, "--query", "env"); while(<UDEV>) { if($_ =~ /^ID_SERIAL=Apple_iPod_([A-Za-z0-9]{16})/) { $found = $1;