On Wed, Jun 21, 2006 at 02:25:31AM +0200, Fr??d??ric Bothamy wrote:
> * Justin Pryzby <[EMAIL PROTECTED]> [2006-06-20 07:52] :
> > On Tue, Jun 20, 2006 at 01:27:46AM +0200, Fr??d??ric Bothamy wrote:
> > > Package: bash
> > > Version: 3.1-4
> > > Severity: normal
> > > Tags: l10n
> > > 
> > > Hello,
> > > 
> > > Here are the steps to reproduce the problem:
> > > 
> > > - have (and use) an fr_FR.UTF-8 locale
> > > - install the dlocate package
> > > - generate dpkg-list (localized) using this command (from 
> > > /etc/cron.daily/dlocate):
> > > 
> > > LINES=40 COLUMNS=200 dpkg -l "*" | sed -e '1,5d' -e 's/  */ /g' > 
> > > /var/lib/dlocate/dpkg-list
> > > 
> > > - use dlocate like this:
> > > $ dlocate -l openoffice
> > > 
> > > The final lines read:
> > > 
> > > $ dlocate -l openoffice
> > > 
> > > [...]
> > > 
> > > un  openoffice.org2-l10n-el       <n?ant>                      (aucune 
> > > description n'est disponible)
> > > pn  openoffice.org2-l10n-en-gb    <n?ant>                      (aucune 
> > > description n'est disponible)
> > > pn  openoffice.org2-l10n-en-us    <n?ant>                      (aucune 
> > > description n'est disponible)
> > > /usr/bin/dlocate: line 55: 14278 Done                    egrep "$1" 
> > > $DPKGLIST
> > >      14279 Erreur de segmentation  | while read stat name ver descr; do
> > >     printf "%-2s  %-${fieldw}.${fieldw}s %-${fieldw}.${fieldw}s 
> > > %-${fieldd}.${fieldd}s\\n" "$stat" "$name" "$ver" "$descr";
> > > done
> > > $
> > > 
> > > If I change the printf command with /usr/sbin/printf, the segfault no
> > Do you mean coreutils /usr/bin/printf?
> 
> Yes, correct.
>  
> > > longer occurs. If I generate the dpkg-list file with the C locale, the
> > > segfault no longer occurs. If I execute the dlocate command with the C
> > > locale, the segfault no longer occurs.
> > > 
> > > I don't really know how to get a backtrace from a builtin bash
> > > command. So any advice would be welcome.
> > apt-get source bash dpkg-dev
> > cd bash-...
> > DEB_BUILD_OPTIONS=nostrip dpkg-buildpackage -rfakeroot
> > gdb --args ./debian/bash/usr/bin/bash dlocate -l openoffice
> 
> Rather "gdb --args ./debian/bash/bin/bash dlocate -l openoffice"
> (without /usr). However, this does not help to get a backtrace file:
> 
> [EMAIL PROTECTED]:~/debian/bash/bash-3.1$ gdb --args ./debian/bash/bin/bash 
> dlocate -l openoffice
> GNU gdb 6.4.90-debian
> Copyright (C) 2006 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i486-linux-gnu"...Using host libthread_db library 
> "/lib/tls/libthread_db.so.1".
> 
> (gdb) r
> Starting program: /home/fred/debian/bash/bash-3.1/debian/bash/bin/bash 
> dlocate -l openoffice
> Desired=Unknown/Install/Remove/Purge/Hold
> | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
> |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: 
> uppercase=bad)
> ||/ Name                             Version                          
> Description
> +++-================================-================================-==================================================================================
> 
> [...]
> 
> pn  openoffice.org2-core             <n?ant>                         (aucune 
> description n'est disponible)                                                
> /usr/bin/dlocate: line 55: 26638 Done                    egrep "$1" $DPKGLIST
>      26639 Erreur de segmentation  | while read stat name ver descr; do
>     printf "%-2s  %-${fieldw}.${fieldw}s %-${fieldw}.${fieldw}s 
> %-${fieldd}.${fieldd}s\\n" "$stat" "$name" "$ver" "$descr";
> done
> 
> Program exited normally.
> (gdb)
> 
> Do you have another idea?
Is egrep the one segfaulting?  You can do the same as before to build
a "grep" deb with debugging symbols, then just dpkg -i
../grep_....deb.  apt-get {--re,}install grep later if you wish.

It isn't completely clear to me how gdb would handle debugging the
grep; you might have to change the shell script to use

  'gdb egrep "$1" $DPKGLIST'

instead, or just dump "$1" and $DPKGLIST to a file to fiddle with it
manually.

Justin


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to