Subject: Re: Segmentation fault
To: None <>
From: Lucio De Re <>
List: tech-userlevel
Date: 09/28/2000 08:17:33
On Wed, Sep 27, 2000 at 07:29:00PM +0200, Ignatios Souvatzis wrote:
> I didn't follow closely... if you have source to the program, could you link
> it with electric_fence, please (both ways)? This catches out-of-malloc-accesses
> very effectively.
The results of "ktrace /usr/local/bin/backend" are quite enlightening:

---- cut ----
$ cd tmp
$ ktrace /usr/local/bin/backend
Memory fault
$ kdump
   232 ktrace   RET   ktrace 0
   232 ktrace   CALL  execve(0xbfbfdcb7,0xbfbfdc6c,0xbfbfdc74)
   232 ktrace   NAMI  "/usr/local/bin/backend"
$ /usr/local/bin/backend
Memory fault
$ ls -l /usr/local/bin/backend
-r-sr-x---  1 root  operator  19544 Sep 25 09:02
$ su
csh: Permission denied
csh: Trying to start from "/root"
grin# ktrace /usr/local/bin/backend
ktrace: exec of '/usr/local/bin/backend' failed: Permission denied
---- cut ----

The permission denied to "root" stems from the /usr mount flags, where
maproot is the default nobody:nogroup.  That in itself is a bit of a
problem, but I won't comment on it until I have thought it through.

Now let me see what happens once I have executed the program through

---- cut ----
$ gdb /usr/local/bin/backend
GNU gdb 4.17
Copyright 1998 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
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
This GDB was configured as "i386--netbsd"...
(gdb) run
Starting program: /usr/local/bin/backend
usage: backend [-h] [-d <dir>]... [-i <id>] [-R] [-v] <destination>

Program exited with code 02.
(gdb) q
$ ktrace /usr/local/bin/backend
usage: backend [-h] [-d <dir>]... [-i <id>] [-R] [-v] <destination>
---- cut ----

Looks more workable, but the ktrace is still trivial :-(

---- cut ----
$ ls -l ktrace.out
-rw-rw-r--  1 lucio  staff  186 Sep 28 08:13 ktrace.out
$ kdump
   245 ktrace   RET   ktrace 0
   245 ktrace   CALL  execve(0xbfbfdcb7,0xbfbfdc6c,0xbfbfdc74)
   245 ktrace   NAMI  "/usr/local/bin/backend"
---- cut ----

From this point, backend behaves fine.