Re: SIGABRT on `cvs login`

From: Yuri Pankov <yuri.pankov_at_gmail.com>
Date: Fri, 18 Jan 2008 14:29:31 +0300
On Fri, Jan 18, 2008 at 09:13:38AM +0300, Yuri Pankov wrote:
> Hi,
> 
> I'm getting SIGABRT running `cvs login`. It's -CURRENT/amd64 updated
> on Jan, 16.
> 
> Backtrace:
> 
> (gdb) run login
> Starting program: /usr/bin/cvs login
> Logging in to :pserver:anoncvs_at_anoncvs.tw.freebsd.org:2401/home/ncvs
> CVS password:   <- using "anoncvs" here
> cvs login: warning: failed to open /home/yuri/.cvspass for reading: No
> such file or directory
> Assertion failed: ((run->regs_mask[elm] & (1U << bit)) == 0), function
> arena_run_reg_dalloc, file /usr/src/lib/libc/stdlib/malloc.c, line 2197.
> 
> Program received signal SIGABRT, Aborted.
> 0x00000008013f53cc in kill () at kill.S:2
> 2       RSYSCALL(kill)
> Current language:  auto; currently asm
> (gdb) bt full
> #0  0x00000008013f53cc in kill () at kill.S:2
> No locals.
> #1  0x00000008013f423b in abort () at
> /usr/src/lib/libc/stdlib/abort.c:65
>         act = {__sigaction_u = {__sa_handler = 0x90, __sa_sigaction =
> 0x90}, sa_flags = 8, sa_mask = {__bits = {4294967263, 
>       4294967295, 4294967295, 4294967295}}}
> #2  0x00000008013dd225 in __assert (func=0x8289 <Error reading address
> 0x8289: Bad address>, 
>     file=0x6 <Error reading address 0x6: Bad address>, line=0,
> failedexpr=0x0) at /usr/src/lib/libc/gen/assert.c:54
> No locals.
> #3  0x0000000801383bf3 in arena_dalloc_small (arena=0x589e70,
> chunk=Variable "chunk" is not available.
> ) at /usr/src/lib/libc/stdlib/malloc.c:2197
>         run = (arena_run_t *) 0x601000
>         bin = (arena_bin_t *) 0x589fe8
>         size = 16
>         __func__ = "arena_dalloc_small"
> #4  0x0000000801383ea6 in idalloc (ptr=0x6012a0) at
> /usr/src/lib/libc/stdlib/malloc.c:3097
>         chunk = (arena_chunk_t *) 0x600000
>         __func__ = "idalloc"
> #5  0x0000000801384177 in free (ptr=0x6012a0) at
> /usr/src/lib/libc/stdlib/malloc.c:4571
>         __func__ = "free"
> #6  0x0000000000429bb2 in login (argc=Variable "argc" is not available.
> ) at
> /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs/src/login.c:574
>         typed_password = 0x601290 'Z' <repeats 64 times>
>         cvsroot_canonical = 0x613300
> ":pserver:anoncvs_at_anoncvs.tw.freebsd.org:2401/home/ncvs"
> #7  0x000000000042c538 in main (argc=1, argv=0x7fffffffe668)
>     at
> /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs/src/main.c:1010
>         n = (Node *) 0x6131c0
>         CVSroot_parsed = Variable "CVSroot_parsed" is not available.
> 
> Any other info that I can provide?

More details:
diff between 1.11.17 and 1.11.22

Index: ccvs/src/client.c
diff -u ccvs/src/client.c:1.318.4.20 ccvs/src/client.c:1.318.4.42
--- ccvs/src/client.c:1.318.4.20        Mon Apr 26 15:52:05 2004
+++ ccvs/src/client.c   Thu Jun  8 19:58:30 2006
<snip>
_at__at_ -3914,6 +3921,7 _at__at_
 
         /* Paranoia. */
         memset (password, 0, strlen (password));
+       free (password);
 # else /* ! AUTH_CLIENT_SUPPORT */
        error (1, 0, "INTERNAL ERROR: This client does not support
pserver authentication");
 # endif /* AUTH_CLIENT_SUPPORT */
<snip>

password = get_cvs_password(), which returns cvs_password if
it's set, and cvs_password is free()'d again in login.c.


Yuri
Received on Fri Jan 18 2008 - 10:29:44 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:26 UTC