On 12/16/05, Ola Lundqvist <[EMAIL PROTECTED]> wrote:
> I have nothing to test on so I can hardly make a working patch
> but if you could create a patch for me, that would help a lot!

I have no hope of making Xvnc work. It's written as old K&R C coding
style, lots of warning when compiled with -Wall. No automake, tons of
ifdef, auto-rewriten Makefiles... Just adding -Wall -g to build was
painfull.

I corrected all includes about functions returning pointers, there are
other errors. If I patch code until I have a working binary for my
needs; other peoples will have a lot of troubles with differents
fonts, bpp, geometry or things like that, triggering bugs that I
didn't. Also any patch I will write can broke non-amd64, non-linux,
non-debian, non-sarge build because I don't know who is it supposed to
be build.

I think you should update this code to a more recent and 64bits aware
version; this code will not work unless lot and lot of work; and I
don't think it worth it.

I'm on a step where code jump to short, and I don't understand why.
It is supposed inside InitKbdFeedbackClassDeviceStruct() to call NoopDDA()
at 0x427b2d and it goes to 0x0000000000427b26

(gdb) break devices.c:666
Breakpoint 1 at 0x41b86f: file devices.c, line 666.
(gdb) run :6
Starting program: /home/seb/build/vnc-3.3.7/Xvnc/programs/Xserver/Xvnc :6
17/12/05 10:15:28 Xvnc version 3.3.7 - built Dec 13 2005 16:44:32
17/12/05 10:15:28 Copyright (C) 2002-2003 RealVNC Ltd.
17/12/05 10:15:28 Copyright (C) 1994-2000 AT&T Laboratories Cambridge.
17/12/05 10:15:28 All Rights Reserved.
17/12/05 10:15:28 See http://www.realvnc.com for information on VNC
17/12/05 10:15:28 Desktop name 'x11' (ramoth:6)
17/12/05 10:15:28 Protocol version supported 3.3
17/12/05 10:15:28 Listening for VNC connections on TCP port 5906

Breakpoint 1, InitKbdFeedbackClassDeviceStruct (dev=0x719680,
bellProc=0x4b5e9e <rfbSendBell>,
    controlProc=0x427b2d <NoopDDA>) at devices.c:666
666         if (!feedc)
(gdb) s
668         feedc->BellProc = bellProc;
(gdb) s
669         feedc->CtrlProc = controlProc;
(gdb) s
673         feedc->ctrl = defaultKeyboardControl;
(gdb) s
674         feedc->ctrl.id = 0;
(gdb) s
675         if ((feedc->next = dev->kbdfeed) != 0)
(gdb) s
677         dev->kbdfeed = feedc;
(gdb) s
683         (*dev->kbdfeed->CtrlProc)(dev,&dev->kbdfeed->ctrl);
(gdb) print *feedc
$1 = {BellProc = 0x4b5e9e <rfbSendBell>, CtrlProc = 0x427b2d
<NoopDDA>, ctrl = {click = 0,
    bell = 50, bell_pitch = 400, bell_duration = 100, autoRepeat = 1,
    autoRepeats = '\0' <repeats 31 times>, leds = 0, id = 0 '\0'}, next = 0x0}
(gdb) print dev
$2 = 0x719680
(gdb) print *dev
$3 = {public = {devicePrivate = 0x0, processInputProc = 0x42c847
<ProcessKeyboardEvent>,
    realInputProc = 0x42c847 <ProcessKeyboardEvent>, enqueueInputProc
= 0x4293de <EnqueueEvent>,
    on = 0}, next = 0x0, grabTime = {months = 0, milliseconds =
1134810928573}, startup = 1,
  deviceProc = 0x4a1c54 <rfbKeybdProc>, inited = 0, grab = 0x0, sync =
{frozen = 0, state = 0,
    other = 0x0, event = 0x0, evcount = 0}, type = 0, name = 0x719960
"keyboard", id = 0 '\0',
  activatingKey = 0 '\0', fromPassiveGrab = 0, activeGrab = {next =
0x0, resource = 0,
    device = 0x0, window = 0x0, ownerEvents = 0, keyboardMode = 0,
pointerMode = 0, coreGrab = 0,
    coreMods = 0, type = 0 '\0', modifiersDetail = {exact = 0, pMask =
0x0}, modifierDevice = 0x0,
    detail = {exact = 0, pMask = 0x0}, confineTo = 0x0, cursor = 0x0,
eventMask = 0},
  ActivateGrab = 0x429e66 <ActivateKeyboardGrab>,
  DeactivateGrab = 0x42a079 <DeactivateKeyboardGrab>, key = 0x71ab90,
valuator = 0x0,
  button = 0x0, focus = 0x71bcc0, proximity = 0x0, kbdfeed = 0x71bd00,
ptrfeed = 0x0,
  intfeed = 0x0, stringfeed = 0x0, bell = 0x0, leds = 0x0}
(gdb) print &dev->kbdfeed->ctrl
$4 = (KeybdCtrl *) 0x71bd10
(gdb) print dev->kbdfeed->ctrl
$5 = {click = 0, bell = 50, bell_pitch = 400, bell_duration = 100,
autoRepeat = 1,
  autoRepeats = '\0' <repeats 31 times>, leds = 0, id = 0 '\0'}
(gdb) print dev->kbdfeed->CtrlProc
$6 = 0x427b2d <NoopDDA>
(gdb) print *dev->kbdfeed->CtrlProc
$7 = {void (DeviceIntPtr, KeybdCtrl *)} 0x427b2d <NoopDDA>
(gdb) s

Program received signal SIGSEGV, Segmentation fault.
0x0000000000427957 in AlterSaveSetForClient (client=0x427aff,
pWin=0x60, mode=1) at dixutils.c:343
343             while ((j < numnow) && (pTmp[j] != (pointer)pWin))
(gdb) bt
#0  0x0000000000427957 in AlterSaveSetForClient (client=0x427aff,
pWin=0x60, mode=1)
    at dixutils.c:343
#1  0x0000000000427b26 in DeleteWindowFromAnySaveSet (pWin=0x60) at
dixutils.c:396
#2  0x000000000041b98b in InitKbdFeedbackClassDeviceStruct (dev=0x719680,
    bellProc=0x4b5e9e <rfbSendBell>, controlProc=0x427b2d <NoopDDA>)
at devices.c:683
#3  0x000000000041bf6e in InitKeyboardDeviceStruct (device=0x719680,
pKeySyms=0x7fbfffef20,
    pModifiers=0x7fbfffee20 "", bellProc=0x4b5e9e <rfbSendBell>,
controlProc=0x427b2d <NoopDDA>)
    at devices.c:867
#4  0x00000000004a1cec in rfbKeybdProc (pDevice=0x719680, onoff=0) at init.c:606
#5  0x000000000041a83c in InitAndStartDevices () at devices.c:171
#6  0x0000000000403f61 in main (argc=2, argv=0x7fbffff0b8) at main.c:376


--
Seb, autocuiseur

Reply via email to