FS#18051 - [bash] 4.1.002-1 broke my system i686

Attached to Project: Arch Linux
Opened by Jarosław Górny (jaroslav) - Thursday, 28 January 2010, 12:14 GMT
Last edited by Allan McRae (Allan) - Sunday, 31 January 2010, 12:23 GMT
Task Type Bug Report
Category Packages: Core
Status Closed
Assigned To Allan McRae (Allan)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:
After todays system upgrade my system became unusable:

during bash package activation phase:

sh: symbol lookup error: sh: undefined symbol: rl_filename_rewrite_hook
błąd: komenda nie wykonała się poprawnie
sh: symbol lookup error: sh: undefined symbol: rl_filename_rewrite_hook
błąd: komenda nie wykonała się poprawnie


Additional info:
* package version(s)
4.1.002-1



Steps to reproduce:
Install bash package in this version.
This task depends upon

Closed by  Allan McRae (Allan)
Sunday, 31 January 2010, 12:23 GMT
Reason for closing:  Fixed
Additional comments about closing:  bash-4.1.002-2 in [testing] waiting for signoff
Comment by Jarosław Górny (jaroslav) - Thursday, 28 January 2010, 12:16 GMT
After this any script using /bin/bash fails. I can not start / stop services. I'm affraid that after reboot system will not start at all.
By the way: where can I find previous version of bash? Maybe this will help me to recover from this.
Comment by xduugu (xduugu) - Thursday, 28 January 2010, 12:39 GMT
Did you also upgrade readline to 6.1.001?
Comment by Jarosław Górny (jaroslav) - Thursday, 28 January 2010, 12:41 GMT
I suppose new readline (6.1.001-1) is needed by this bash. But apparently it's not mirrored yet:

[root@masala Download]# LANG= pacman -S readline
readline package not found, searching for group...
error: 'readline': not found in sync db
[root@masala Download]# LANG= pacman -Q readline
readline 6.0.004-1


If this is the case, bash package should REQUIRE this particular version of readline.

Thanks to: http://www.schlunix.org/archlinux/core/os/i686/ I was able to downgrade to older version of bash.
Comment by xduugu (xduugu) - Thursday, 28 January 2010, 12:44 GMT
> I suppose new readline (6.1.001-1) is needed by this bash. But apparently it's not mirrored yet:
>
> [root@masala Download]# LANG= pacman -S readline
readline package not found, searching for group...
error: 'readline': not found in sync db

Rather seems to be a problem with your database. There should _always_ be a readline package in core. Try to run 'pacman -Syy' and check again for readline 'pacman -Si readline'.
Comment by Jarosław Górny (jaroslav) - Thursday, 28 January 2010, 12:47 GMT
[root@masala Download]# LANG= pacman -Qpi /var/cache/pacman/pkg/bash-4.1.002-1-i686.pkg.tar.gz
Name : bash
Version : 4.1.002-1
...
Depends On : readline>=6.0 glibc


So this is a bug here.
Comment by xduugu (xduugu) - Thursday, 28 January 2010, 12:50 GMT
Yeah, but that's usually not a critical one. At least when you use 'pacman -Syu' and your pacman database is not corrupt.
Comment by Jarosław Górny (jaroslav) - Thursday, 28 January 2010, 12:54 GMT
1. OK. I have nothing against changing priority of this bug. However it should be fixed ASAP.
2. I did upgrade with 'pacman -Syuv' like You say.
3. There's always a chance that something goes wrong - just like in my case. That's why providing correct dependencies is so crucial. If the dependencies in bash were correct I wouldn't have this issue because bash would be simply not upgraded at all.
Comment by xduugu (xduugu) - Thursday, 28 January 2010, 13:00 GMT
I'm not interested in arguing about the severity or the relevance of this bug. Just wanted to say that the cause for this is most likely a corrupt pacman database. Did you already try to run a pacman -Syy?
Comment by Jarosław Górny (jaroslav) - Thursday, 28 January 2010, 13:06 GMT
Yes, I did 'pacman -Syy' and now new version of readline is visible.
However, this does not change anything: the bug still exists - bash 4.1.002-1 package has wrong (out-dated) dependency.

DB corruption only triggered this bug (otherwise I woudn't notice this at all).
Comment by Jan Stępień (janek) - Friday, 29 January 2010, 18:20 GMT
I can confirm this problem. It's pretty serious. After updating bash and rebooting my Arch is completely unusable. During the startup process the system displays following messages and hangs.

INIT: version 2.86 booting
/bin/bash: symbol lookup error: /bin/bash: undefined symbol: rl_filename_rewrite_hook
INIT: Entering runlevel: 3
/bin/bash: symbol lookup error: /bin/bash: undefined symbol: rl_filename_rewrite_hook
INIT: Id "c5" respawning too fast: disabled for 5 minutes
# 5 similar lines for c1, c4, c2, c3 and c6
INIT: no more processes left in this runlevel

A fix would be really welcome.
Comment by Mauro (mornon) - Friday, 29 January 2010, 20:38 GMT
same problem, system unusable after updating to latest bash version

i tried a dirty fix and it worked:
- boot from another media (i tried sysrescd from a sd card)
- mounted the system root in a temporary folder
- made a backup of the bash binary
- copied the bash binary (/bin/bash) from sysrescd to the system (yes, i know.. it's dirty)

rebooted, and it works

i had to do a 'pacman -Syy' to be able to update readline, then i force-reinstalled bash

everything seems ok now

hope it helped
Comment by Jan Stępień (janek) - Friday, 29 January 2010, 21:37 GMT
Thanks, Mauro. Unfortunately copying /bin/bash from Arch Linux 2009.2 live CD caused a "libreadline not found" problem. Instead, I have solved the issue using the live CD in a following way:

1. mount /dev/my_root_partition /mnt/arch
2. pacman -Syy && pacman -S bash readline
3. for i in $(pacman -Ql bash readline | awk '{print $2}'); cp $i /mnt/arch/$i; done

Rebooted, started the Arch installed on the HDD and

4. pacman -S --force bash readline

HTH.

Loading...