Bug#493168: gpm: Segfaults on boot.

Kurt Roeckx kurt at roeckx.be
Fri Aug 1 17:58:07 UTC 2008


On Fri, Aug 01, 2008 at 03:23:25AM +0200, Nico Schottelius wrote:
> Can you try the following:
> 
> - install debugging symbols for gpm

It's not like there is a -dbg package.

> - install gdb

> - start console-screen
> - start gpm in non forking mode (-D) and run it under gdb

Those 2 need to be reversed.

> - send the backtrace, where it crashes

It segfaults here in src/daemon/old_main.c:
         /* and notify clients */
         for(i=0; i<MAX_VC+1; i++) {
            Gpm_Cinfo *ci;
            for (ci = cinfo[i]; ci; ci = ci->next) kill(ci->data.pid,SIGWINCH);
         }

The problem is that <linux/vt.h> has:
./linux/vt.h:#define MAX_NR_CONSOLES    63      /* serial lines start at 64 */

While src/headers/daemon.h has:
#ifndef MAX_NR_CONSOLES
#  define MAX_NR_CONSOLES 64 /* this is always sure */
#endif

#define MAX_VC    MAX_NR_CONSOLES  /* doesn't work before 1.3.77 */

Some files, like gpm.c that defines cinfo think that cinfo contains
64 elements, while others like old_main.c thinks it has 65.  And
so cinfo[64] is really the address of an other variable (maxx).

I suggest you add an #include <linux/vt.h> in daemon.h.


Kurt






More information about the pkg-gpm-devel mailing list