You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Daniel Kehoe <ke...@fortuity.com> on 2005/03/23 02:08:51 UTC

gdb shows segfault on reading passwd.db

I've compiled and installed Subversion 1.1.3 on a Sun Cobalt Raq550 but  
I'm getting a "Segmentation fault" error on use of "svnadmin create".

I've run gdb debug and found "svnadmin create" fails on an attempt to  
open "/var/db/passwd.db". It shows "No such file or directory" but the  
file *does* exist.

Is there a potential problem with different versions of that file or  
Berkeley DB on this system?

Is there a configuration file I need to create?

I'd appreciate any help on resolving this issue. I've already scoured  
the FAQ and the mailing list archives.

Here's the debug details.

[root /var]# which svnadmin
/usr/local/bin/svnadmin
[root /var]# svnadmin create /var/subversion
Segmentation fault (core dumped)
[root /var]# gdb svnadmin
GNU gdb 5.0rh-5 Red Hat Linux 7.1
Copyright 2001 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 "i386-redhat-linux"...
(gdb) r create /var/subversion
Starting program: /usr/local/bin/svnadmin create /var/subversion
[New Thread 1024 (LWP 27913)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 27913)]
0x00000000 in __strtol_internal (nptr=0x4041d4a0 "/var/db/passwd.db",
     endptr=0x1, base=16, group=0) at eval.c:35
35      eval.c: No such file or directory.
         in eval.c
(gdb) backtrace
#0  0x00000000 in __strtol_internal (nptr=0x4041d4a0  
"/var/db/passwd.db",
     endptr=0x1, base=16, group=0) at eval.c:35
#1  0x4039af9e in db_open () from /lib/libnss_db.so.2
#2  0x4039b050 in internal_setent () from /lib/libnss_db.so.2
#3  0x40399943 in _nss_db_endpwent () from /lib/libnss_db.so.2
#4  0x40399d6f in _nss_db_getpwuid_r () from /lib/libnss_db.so.2
#5  0x402e8d9f in __getpwuid_r (uid=0, resbuf=0xbffff010,
     buffer=0xbfffee10  
"\004\005\006\a\b\t\n\013\f\r\016\017\020\021\022\023\024\025\026\027L? 
\006\b?\205", buflen=512, result=0xbfffee0c)
     at ../nss/getXXbyYY_r.c:200
#6  0x4019c710 in apr_uid_name_get (username=0xbffff05c, userid=0,  
p=0x8058f78)
     at userinfo.c:117
#7  0x40089144 in svn_config__user_config_path (config_dir=0x0,
     path_p=0xbffff0a0, fname=0x4009dbc1 "servers", pool=0x8058f78)
     at subversion/libsvn_subr/config_file.c:324
#8  0x400876ac in get_category_config (cfg=0xbffff0d8, config_dir=0x0,
     category=0x4009dbc1 "servers", pool=0x8058f78)
     at subversion/libsvn_subr/config.c:213
#9  0x4008775a in svn_config_get_config (cfg_hash=0xbffff110,  
config_dir=0x0,
     pool=0x8058f78) at subversion/libsvn_subr/config.c:233
#10 0x08049eb7 in subcommand_create (os=0x8058fb0, baton=0xbffff230,
     pool=0x8058f78) at subversion/svnadmin/main.c:457
#11 0x0804bc46 in main (argc=3, argv=0xbffff304)
     at subversion/svnadmin/main.c:1228
#12 0x4025ceab in __libc_start_main (main=0x804b19c <main>, argc=3,
     ubp_av=0xbffff304, init=0x80493d8 <_init>, fini=0x804bdbc <_fini>,
     rtld_fini=0x4000c090 <_dl_fini>, stack_end=0xbffff2fc)
     at ../sysdeps/generic/libc-start.c:129


  --
   Daniel
  kehoe@fortuity.com


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org


Re: gdb shows segfault on reading passwd.db

Posted by Ben Collins-Sussman <su...@collab.net>.
Daniel Kehoe wrote:

> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 1024 (LWP 27913)]
> 0x00000000 in __strtol_internal (nptr=0x4041d4a0 "/var/db/passwd.db",
>     endptr=0x1, base=16, group=0) at eval.c:35
> 35      eval.c: No such file or directory.
>         in eval.c
> (gdb) backtrace
> #0  0x00000000 in __strtol_internal (nptr=0x4041d4a0  "/var/db/passwd.db",
>     endptr=0x1, base=16, group=0) at eval.c:35
> #1  0x4039af9e in db_open () from /lib/libnss_db.so.2
> #2  0x4039b050 in internal_setent () from /lib/libnss_db.so.2
> #3  0x40399943 in _nss_db_endpwent () from /lib/libnss_db.so.2
> #4  0x40399d6f in _nss_db_getpwuid_r () from /lib/libnss_db.so.2
> #5  0x402e8d9f in __getpwuid_r (uid=0, resbuf=0xbffff010,
>     buffer=0xbfffee10  
> "\004\005\006\a\b\t\n\013\f\r\016\017\020\021\022\023\024\025\026\027L? 
> \006\b?\205", buflen=512, result=0xbfffee0c)
>     at ../nss/getXXbyYY_r.c:200
> #6  0x4019c710 in apr_uid_name_get (username=0xbffff05c, userid=0,  
> p=0x8058f78)
>     at userinfo.c:117
> #7  0x40089144 in svn_config__user_config_path (config_dir=0x0,
>     path_p=0xbffff0a0, fname=0x4009dbc1 "servers", pool=0x8058f78)
>     at subversion/libsvn_subr/config_file.c:324


Thanks for the backtrace.  Whatever the problem is, it looks like 
something wrong with with your system libraries, not Subversion.

Working backwards:  Subversion is trying to read your ~/.subversion/ 
run-time config files  -- that's call #7 there.  In order to do that, it 
  needs to find your username, so it can find the path to your home 
directory.

So it calls #6, apr_uid_name_get(), which is supposed to portably return 
your username.  On unix-y/posix-y systems, that calls getpwuid(), a 
standard system call to get user/password information from the system 
password database (usually /etc/passwd).  In this case, it's 
__getpwuid_r(), call #5.

 From there, it's all a mystery.  That system call is calling functions 
in /lib/libnss_db.so, and I have no idea what that is.  Whatever it is, 
it looks like it's trying to open a specific password database and 
segfaulting.

Honestly, it looks like there's something wrong with your system 
libraries.  Why would a getpwuid() call *possibly* cause a segfault? 
Bad OS install?  Bad OS libs?  Misconfigured system?


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org