[ic] 4.8.2 core dump

Pablo Costa interchange-users@interchange.redhat.com
Wed Oct 3 01:56:01 2001


On Sun, 30 Sep 2001, Sameh Ghane wrote:

> Le (On) Thu, Sep 27, 2001 at 09:20:34AM -0400, mheins@redhat.com ecrivit (wrote):
> >
> > I think I know what this means -- the DB_File module is core dumping. I bet
> > you could go back to low traffic mode if you removed:
> >
> >     Pragma dynamic_variables
> >
> > from templates/foundation/theme.cfg.
>
> Doesn't work.
>
> GDB indicates that perl cores dump at #0  0x2816a175 in setproctitle () from
> /usr/lib/libc.so.4
>
> Fine. The only place where perl uses setproctitle is in mg.c. I recompiled perl,
> #undef'ining HAS_SETPROCTITLE, and now interchanges runs fine.
>
> perl is still version 5.005_03 built for i386-freebsd.
>
> If someone with more perl/interchange knowledge is interested in finding what
> calls setproctitle with bogus arguments, go for it ;)
>
> > I think I am
> > going to have to put some hints in for BSD again, sigh....
>
> BSD-developped software have the same problem towards linux...


On some systems it's possible to affect what's displayed by ps by simply
assigning to $0 - on others the kernel has a private copy of the program
name so that you can't do this simply.  E.g.

$ perl -e '$0 = "hi Mike"; sleep 60' &
[1]     4133
$ ps 4133
  PID TTY      S           TIME COMMAND
 4133 ttyp8    I N      0:00.03 hi Mike



Interchange try this on line 2813
of /usr/local/interchange/bin/interchange

2813 #                       $0 = 'interchange';

   A real problem is that it is essentially non-portable.
   Most UNIXen allow to do strcopy(argv, "my new name"), but some
do not. Some (esp. BSD-derived) has setproctitle("new string")
call in libc (almost always this function is not prototyped in headers).



I commented this string in line 2812 to 2814 in
/usr/local/interchange/bin/interchange
and all works again :-))



   2807                if(defined $Global::Variable->{MV_DOLLAR_ZERO}) {
   2808                       $0 = $Global::Variable->{MV_DOLLAR_ZERO};
   2809                        $0 = "interchange --> $Global::VendRoot"
   2810                                        if length($0) < 2;
   2811                }
   2812 #               else {
   2813 #                       $0 = 'interchange';
   2814 #               }



Bye



-- 
Pablo Martins F. Costa
Casablanca Service Provider
Av. República do Líbano, 390
Sao Paulo - SP - Brasil
04502-000

tel.: (011) 3889-2717

e-mail: pablo@cbsp.com.br
site: www.cbsp.com.br