We are currently migrating Bugzilla to GitHub issues.
Any changes made to the bug tracker now will be lost, so please do not post new bugs or make changes to them.
When we're done, all bug URLs will redirect to their equivalent location on the new bug tracker.

Bug 900

Summary: SDL joystick problems on Linux with current version
Product: SDL Reporter: elboato
Component: joystickAssignee: Sam Lantinga <slouken>
Status: RESOLVED FIXED QA Contact: Sam Lantinga <slouken>
Severity: normal    
Priority: P2 CC: bobbens
Version: 2.0.0   
Hardware: All   
OS: Linux   
Attachments: Java Error Log File

Description elboato 2009-12-10 12:29:57 UTC
Created attachment 461 [details]
Java Error Log File

Hi there!

For my Java-Joystick-Driver I'm using SDL...
http://sourceforge.net/projects/ffjoystick4java/

I used to work with SDL-1.3.0-4786, but the cartesian directions for haptic
effects don't work there. (the direction datatype was an Uint16, somebody
discovered that already and changed it to Sint - Thx for that!!!)

But now the problem: I discovered it first in Version SDL-1.3.0-5179 but it
still exists in SDL-1.3.0-5358 (and i need to use the current version now to
get the cartesian directions working).

On Windows everything works fine. But on Linux my program behaves very weird
and then it crashes. I'm quite sure that the problem lies within SDL. 

The weird behaviour: my joysticks usually have several axes and hats, but now I
only see ONE axis, no hats and the buttons don't work either. So probably it
does not have to do with SDL_haptic, because the input does not work either.

After only a few movements or button-presses the program crashes. I attached
the Java Error log-File.

I tried, but I don't really know much about SDL except about joystick input and
haptic, so I could not find the problem. Hopefully somebody can fix the
problem...

All the best,

elboato
Comment 1 Sam Lantinga 2009-12-14 23:54:43 UTC
Is there any chance I can log in to remote debug this?  It sounds like SDL isn't picking up your joystick properly.  Please send me private e-mail at slouken@libsdl.org if this is possible.

Thanks!
Comment 2 elboato 2009-12-15 03:52:54 UTC
Or did I maybe just make a mistake when I was updating to the newer Version?

I ran 'make uninstall' to uninstall the old version and installed the new one with 'configure', 'make', and 'make install'....
Comment 3 Edgar Simo 2009-12-15 12:19:16 UTC
Could you recompile SDL with debug symbols and try to generate a new "Java Error Log File" please?
Comment 4 elboato 2009-12-16 03:16:04 UTC
(In reply to comment #3)
> Could you recompile SDL with debug symbols and try to generate a new "Java
> Error Log File" please?

How exactly should I do that?

In the makefile generated from configure there's a line 'CFLAGS  = -g -O2' and '$(CFLAGS)' is there in every line that compiles one file...

Thx in advance!

elboato
Comment 5 Edgar Simo 2009-12-16 11:31:55 UTC
Mmm, I thought SDL had a --enable-debug or the likes in the configure script. Anyhow, you'll need to get rid of the -O2 flag and only keep the -g. I've been seeing this quite a lot lately, however using -O2 makes a backtrace not nearly as informative as it should be. Your Java Error Log File seems to have a backtrace in it, it would be extremely interesting to get the file and line numbers of where the crash actually happens as it would help me a lot in figuring it out. Try removing the -O2 stuff (not entirely sure what the proper way is) and it should enable line numbers. However looking at the backtrace a bit more I see it doesn't mention haptic at all, however that doesn't mean it might be an issue.
Comment 6 Edgar Simo 2009-12-16 11:33:35 UTC
Oh, forgot to mention, try running the haptic tests (test/testhaptic). It would be interested to know it's output and whether or not it rumbles as appropriate.
Comment 7 elboato 2009-12-16 13:00:32 UTC
(In reply to comment #6)
> Oh, forgot to mention, try running the haptic tests (test/testhaptic). It would
> be interested to know it's output and whether or not it rumbles as appropriate.

As i supposed: Rumble works fine with testhaptic, as it does with my java program.
Comment 8 elboato 2009-12-16 13:39:48 UTC
(In reply to comment #5)
> Mmm, I thought SDL had a --enable-debug or the likes in the configure script.
> Anyhow, you'll need to get rid of the -O2 flag and only keep the -g. I've been
> seeing this quite a lot lately, however using -O2 makes a backtrace not nearly
> as informative as it should be. Your Java Error Log File seems to have a
> backtrace in it, it would be extremely interesting to get the file and line
> numbers of where the crash actually happens as it would help me a lot in
> figuring it out. Try removing the -O2 stuff (not entirely sure what the proper
> way is) and it should enable line numbers. However looking at the backtrace a
> bit more I see it doesn't mention haptic at all, however that doesn't mean it
> might be an issue.

I tried testjoystick.c now. Here's the output:

el@el-laptop:~/SDL/SDL-1.3.0-5358/test$ ./testjoystick.out 
There are 2 joysticks attached
Joystick 0: Logitech Logitech RumblePad 2 USB
       axes: 1
      balls: 0
       hats: 0
    buttons: 12
Joystick 1: Logitech WingMan RumblePad
       axes: 1
      balls: 0
       hats: 0
    buttons: 9

So the problem definitely has got nothing to do with haptics. Both gamepads should have 4 axes and 1 hat.

And I think my Java program only crashes
A) when I use the hat of the gamepad, or
B) sometimes immediately after starting (before i get the chance press anything).


Here's another output: (parameter 1)
Buttons seem to work, that 1 axis works also. And as soon as i use the POV: segmentation fault.

el@el-laptop:~/SDL/SDL-1.3.0-5358/test$ ./testjoystick.out 1
There are 2 joysticks attached
Joystick 0: Logitech Logitech RumblePad 2 USB
       axes: 1
      balls: 0
       hats: 0
    buttons: 12
Joystick 1: Logitech WingMan RumblePad
       axes: 1
      balls: 0
       hats: 0
    buttons: 9
Watching joystick 1: (Logitech WingMan RumblePad)
Joystick has 1 axes, 0 hats, 0 balls, and 9 buttons
Joystick 1 axis 0 value: 127
Joystick 1 axis 0 value: 133
Joystick 1 axis 0 value: 127
Joystick 1 axis 0 value: 133
Joystick 1 axis 0 value: 0
....
Joystick 1 button 6 down
Joystick 1 button 7 down
Joystick 1 button 7 up
Joystick 1 axis 0 value: 0
Joystick 1 button 6 up
Joystick 1 axis 0 value: 0
Joystick 1 axis 0 value: 0
Segmentation fault



The next time i started it:
el@el-laptop:~/SDL/SDL-1.3.0-5358/test$ ./testjoystick.out 1There are 2 joysticks attached
Joystick 0: Logitech Logitech RumblePad 2 USB
       axes: 1
      balls: 0
       hats: 0
    buttons: 12
Joystick 1: Logitech WingMan RumblePad
       axes: 1
      balls: 0
       hats: 0
    buttons: 9
Watching joystick 1: (Logitech WingMan RumblePad)
Joystick has 1 axes, 0 hats, 0 balls, and 9 buttons
Segmentation fault


Next time i start it: again segmentation fault once i move the hat.

Well... I'll keep working on it, and I'll keep you updated...
Comment 9 Edgar Simo 2009-12-16 13:48:27 UTC
(In reply to comment #8)
> (In reply to comment #5)
> Joystick 1 axis 0 value: 127
> Joystick 1 axis 0 value: 133
> Joystick 1 axis 0 value: 127
> Joystick 1 axis 0 value: 133
> Joystick 1 axis 0 value: 0
> ....
> Joystick 1 button 6 down
> Joystick 1 button 7 down
> Joystick 1 button 7 up
> Joystick 1 axis 0 value: 0
> Joystick 1 button 6 up
> Joystick 1 axis 0 value: 0
> Joystick 1 axis 0 value: 0
> Segmentation fault


Could you get the backtraces on these segmentation faults please? Just do:

gdb ./testjoystick
r
<should start executing, make it crash>
bt full
Comment 10 elboato 2009-12-16 14:20:29 UTC
> Could you get the backtraces on these segmentation faults please?

[Thread debugging using libthread_db enabled]

Breakpoint 1, main (argc=2, argv=0xbffff4d4) at ./testjoystick_new.c:157
157	    if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) {
(gdb) continue
Continuing.
There are 2 joysticks attached
Joystick 0: Logitech Logitech RumblePad 2 USB
       axes: 1
      balls: 0
       hats: 0
    buttons: 12
Joystick 1: Logitech WingMan RumblePad
       axes: 1
      balls: 0
       hats: 0
    buttons: 9
Watching joystick 1: (Logitech WingMan RumblePad)
Joystick has 1 axes, 0 hats, 0 balls, and 9 buttons
Joystick 1 axis 0 value: 0
Joystick 1 axis 0 value: 127
Joystick 1 axis 0 value: 133
Joystick 1 axis 0 value: 135

Program received signal SIGSEGV, Segmentation fault.
HandleHat (joystick=0x8064898) at src/joystick/linux/SDL_sysjoystick.c:946
946	    if (value != the_hat->axis[axis]) {
Current language:  auto
The current source language is "auto; currently c".
(gdb) bt full
#0  HandleHat (joystick=0x8064898) at src/joystick/linux/SDL_sysjoystick.c:946
        the_hat = 0x0
        position_map = {"\t\001\003", "\b\000\002", "\f\004\006"}
#1  EV_HandleEvents (joystick=0x8064898)
    at src/joystick/linux/SDL_sysjoystick.c:1120
        events = {{time = {tv_sec = 1261001758, tv_usec = 482099}, type = 3, 
            code = 1, value = 136}, {time = {tv_sec = 1261001758, 
              tv_usec = 482107}, type = 3, code = 17, value = -1}, {time = {
              tv_sec = 1261001758, tv_usec = 482116}, type = 0, code = 0, 
            value = 0}, {time = {tv_sec = 134613016, tv_usec = -1073746088}, 
            type = 28505, code = 95, value = 134539320}, {time = {
              tv_sec = 55582, tv_usec = -1073746116}, type = 61240, 
            code = 49151, value = 134529032}, {time = {tv_sec = 16166900, 
              tv_usec = 1561470}, type = 52565, code = 124, value = 2735383}, {
            time = {tv_sec = 8846804, tv_usec = 0}, type = 49140, code = 390, 
            value = 8839616}, {time = {tv_sec = 134539320, tv_usec = 0}, 
            type = 61244, code = 49151, value = -1073746120}, {time = {
              tv_sec = 21, tv_usec = 0}, type = 53541, code = 37, 
            value = 134539408}, {time = {tv_sec = 8, tv_usec = 0}, 
            type = 27494, code = 95, value = 16}, {time = {tv_sec = 0, 
              tv_usec = 2429856}, type = 8180, code = 110, value = 134537800}, 
          {time = {tv_sec = -1073745004, tv_usec = -1073746056}, type = 30918, 
            code = 95, value = 0}, {time = {tv_sec = 0, 
            tv_usec = -1073746040}, type = 8180, code = 110, 
            value = 7217140}, {time = {tv_sec = 134537800, 
              tv_usec = -1073746024}, type = 31065, code = 95, 
            value = 134537800}, {time = {tv_sec = 1, tv_usec = 0}, 
            type = 1447, code = 94, value = 7217140}, {time = {
              tv_sec = 134537800, tv_usec = -1073745992}, type = 65441, 
            code = 92, value = 134537800}, {time = {tv_sec = 134543532, 
              tv_usec = 134543556}, type = 49140, code = 134, 
            value = 134537800}, {time = {tv_sec = -1073745004, 
              tv_usec = -1073745960}, type = 36085, code = 132, 
            value = 134537800}, {time = {tv_sec = 0, tv_usec = 0}, 
            type = 22861, code = 29, value = 8830964}, {time = {
              tv_sec = 134537800, tv_usec = -1073745776}, type = 49550, 
            code = 132, value = 6}, {time = {tv_sec = -1073745904, 
              tv_usec = 0}, type = 0, code = 0, value = 8878340}, {time = {
              tv_sec = -1073745700, tv_usec = -1073745864}, type = 55112, 
            code = 37, value = 134539208}, {time = {tv_sec = 1557014, 
              tv_usec = -1073745832}, type = 61456, code = 49151, value = 0}, {
            time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, value = 0}, {
            time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, value = 0}, {
            time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, value = 0}, {
            time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, value = 0}, {
            time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, value = 0}, {
           time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, value = 0}, {
            time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, value = 0}, {
            time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, 
            value = -1073745556}, {time = {tv_sec = 8830964, 
              tv_usec = -1073745480}, type = 49140, code = 134, value = 0}}
        i = 1
        len = <value optimized out>
        code = <value optimized out>
#2  SDL_SYS_JoystickUpdate (joystick=0x8064898)
    at src/joystick/linux/SDL_sysjoystick.c:1163
        i = <value optimized out>
#3  0x00841e40 in SDL_JoystickUpdate () at src/joystick/SDL_joystick.c:568
No locals.
#4  0x007f5d17 in SDL_PumpEvents () at src/events/SDL_events.c:374
        _this = <value optimized out>
#5  0x007f60ea in SDL_WaitEventTimeout (event=0xbffff394, timeout=0)
    at src/events/SDL_events.c:403
        expiration = 0
#6  0x007f61b5 in SDL_PollEvent (event=0xbffff394)
    at src/events/SDL_events.c:385
No locals.
#7  0x08048ea8 in WatchJoystick (joystick=0x8064898) at ./testjoystick_new.c:50
        screen = 0x8060be8
        i = 0
        done = 0
        y = 134629576
        draw = 0
        axis_area = {{{x = 0, y = 0, w = 0, h = 0}, {x = 0, y = 0, w = 0, 
              h = 0}}, {{x = 0, y = 0, w = 0, h = 0}, {x = 0, y = 0, w = 0, 
              h = 0}}, {{x = 0, y = 0, w = 0, h = 0}, {x = 0, y = 0, w = 0, 
              h = 0}}, {{x = 0, y = 0, w = 0, h = 0}, {x = 0, y = 0, w = 0, 
              h = 0}}, {{x = 0, y = 0, w = 0, h = 0}, {x = 0, y = 0, w = 0, 
              h = 0}}, {{x = 0, y = 0, w = 0, h = 0}, {x = 0, y = 0, w = 0, 
              h = 0}}}
        name = 0x8779e0 "Logitech WingMan RumblePad"
        event = {type = 1 '\001', window = {type = 1 '\001', windowID = 1, 
            event = 3 '\003', data1 = 0, data2 = 0}, key = {type = 1 '\001', 
            windowID = 1, which = 3 '\003', state = 8 '\b', keysym = {
              scancode = SDL_SCANCODE_UNKNOWN, sym = 0, mod = 0, 
              unicode = 134537800}}, edit = {type = 1 '\001', 
            text = "\000\000\000\001\000\000\000\003\b\006\b", '\000' <repeats 12 times>, "H\342\004\b\364\037n\000H", start = -1073745672, length = 8830964}, 
          text = {type = 1 '\001', windowID = 1, which = 3 '\003', 
            text = "\b\006\b", '\000' <repeats 12 times>, "H\342\004\b\364\037n\000H\342\004\b\370\360\377\277", <incomplete sequence \364>}, motion = {
            type = 1 '\001', windowID = 1, which = 3 '\003', state = 8 '\b', 
            x = 0, y = 0, z = 0, pressure = 134537800, pressure_max = 7217140, 
            pressure_min = 134537800, rotation = -1073745672, tilt = 8830964, 
            cursor = 134625472, xrel = -1073745460, yrel = -1073745752}, 
          button = {type = 1 '\001', windowID = 1, which = 3 '\003', 
            button = 8 '\b', state = 6 '\006', x = 0, y = 0}, wheel = {
            type = 1 '\001', windowID = 1, which = 3 '\003', x = 0, y = 0}, 
          jaxis = {type = 1 '\001', which = 0 '\000', axis = 0 '\000', 
            value = 1}, jball = {type = 1 '\001', which = 0 '\000', 
            ball = 0 '\000', xrel = 1, yrel = 134612995}, jhat = {
            type = 1 '\001', which = 0 '\000', hat = 0 '\000', 
            value = 0 '\000'}, jbutton = {type = 1 '\001', which = 0 '\000', 
            button = 0 '\000', state = 0 '\000'}, quit = {type = 1 '\001'}, 
          user = {type = 1 '\001', windowID = 1, code = 134612995, 
            data1 = 0x0, data2 = 0x0}, syswm = {type = 1 '\001', msg = 0x1}, 
          proximity = {type = 1 '\001', windowID = 1, which = 3 '\003', 
            cursor = 0, x = 0, y = 0}, active = {type = 1 '\001', 
            gain = 0 '\000', state = 0 '\000'}, resize = {type = 1 '\001', 
            w = 1, h = 134612995}}
        x = -1073744984
#8  0x080493af in main (argc=2, argv=0xbffff4d4) at ./testjoystick_new.c:187
        name = 0x8779e0 "Logitech WingMan RumblePad"
        i = 2
        joystick = 0x8064898
Comment 11 elboato 2009-12-16 14:31:45 UTC
(In reply to comment #10)
> > Could you get the backtraces on these segmentation faults please?
> 
> [Thread debugging using libthread_db enabled]

Oh I'm not sure if the program actually already crashed when i ran bt full

So here's another one:



el@el-laptop:~/SDL/SDL-1.3.0-5358/test$ sudo g++ `sdl-config --cflags --libs` -I/usr/local/lib/ -g -o ./testjoystick ./testjoystick.c 
el@el-laptop:~/SDL/SDL-1.3.0-5358/test$ gdb ./testjoystick
GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/el/SDL/SDL-1.3.0-5358/test/testjoystick...done.
Breakpoint 1 at 0x80491e4: file ./testjoystick.c, line 157.
(gdb) r 1
Starting program: /home/el/SDL/SDL-1.3.0-5358/test/testjoystick 1
[Thread debugging using libthread_db enabled]

Breakpoint 1, main (argc=2, argv=0xbffff4d4) at ./testjoystick.c:157
157	    if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) {
Current language:  auto
The current source language is "auto; currently c++".
(gdb) continue
Continuing.
There are 2 joysticks attached
Joystick 0: Logitech Logitech RumblePad 2 USB
       axes: 1
      balls: 0
       hats: 0
    buttons: 12
Joystick 1: Logitech WingMan RumblePad
       axes: 1
      balls: 0
       hats: 0
    buttons: 9
Watching joystick 1: (Logitech WingMan RumblePad)
Joystick has 1 axes, 0 hats, 0 balls, and 9 buttons

Program received signal SIGSEGV, Segmentation fault.
HandleHat (joystick=0x8064898) at src/joystick/linux/SDL_sysjoystick.c:946
946	    if (value != the_hat->axis[axis]) {
Current language:  auto
The current source language is "auto; currently c".
(gdb) bt full
#0  HandleHat (joystick=0x8064898) at src/joystick/linux/SDL_sysjoystick.c:946
        the_hat = 0x0
        position_map = {"\t\001\003", "\b\000\002", "\f\004\006"}
#1  EV_HandleEvents (joystick=0x8064898) at src/joystick/linux/SDL_sysjoystick.c:1120
        events = {{time = {tv_sec = 1261002483, tv_usec = 577216}, type = 3, code = 0, value = 0}, {time = {
              tv_sec = 1261002483, tv_usec = 577225}, type = 3, code = 17, value = 1}, {time = {tv_sec = 1261002483, 
              tv_usec = 577233}, type = 0, code = 0, value = 0}, {time = {tv_sec = 134611608, tv_usec = -1073746088}, 
            type = 3929, code = 21, value = 134539320}, {time = {tv_sec = 48724, tv_usec = -1073746116}, type = 61240, 
            code = 49151, value = 5799191}, {time = {tv_sec = 134539320, tv_usec = 14439294}, type = 3413, code = 121, 
            value = 134612736}, {time = {tv_sec = 8601044, tv_usec = 0}, type = 65524, code = 386, value = 7}, {time = {
              tv_sec = 134539320, tv_usec = 0}, type = 61244, code = 49151, value = -1073746120}, {time = {tv_sec = 1, 
              tv_usec = 0}, type = 49445, code = 183, value = 134539408}, {time = {tv_sec = 8, tv_usec = 0}, type = 2918, 
            code = 21, value = 16}, {time = {tv_sec = -1073745916, tv_usec = 15307680}, type = 49140, code = 35, 
            value = 134537800}, {time = {tv_sec = -1073745004, tv_usec = -1073746056}, type = 6342, code = 21, value = 0}, {
            time = {tv_sec = 0, tv_usec = 1}, type = 49140, code = 35, value = 2342900}, {time = {tv_sec = 134537800, 
              tv_usec = -1073746024}, type = 6489, code = 21, value = 134537800}, {time = {tv_sec = 1, tv_usec = 0}, 
            type = 42407, code = 19, value = 2342900}, {time = {tv_sec = 134537800, tv_usec = -1073745992}, type = 40865, 
            code = 18, value = 134537800}, {time = {tv_sec = 134543532, tv_usec = 134543556}, type = 65524, code = 130, 
            value = 134537800}, {time = {tv_sec = -1073745004, tv_usec = -1073745960}, type = 52469, code = 128, 
            value = 134537800}, {time = {tv_sec = 0, tv_usec = 0}, type = 55629, code = 225, value = 8585204}, {time = {
              tv_sec = 134537800, tv_usec = -1073745776}, type = 398, code = 129, value = 6}, {time = {
              tv_sec = -1073745904, tv_usec = 0}, type = 0, code = 0, value = 8632580}, {time = {tv_sec = -1073745700, 
              tv_usec = -1073745864}, type = 51016, code = 183, value = 134539208}, {time = {tv_sec = 14434838, 
              tv_usec = -1073745832}, type = 61456, code = 49151, value = 0}, {time = {tv_sec = 0, tv_usec = 0}, type = 0, 
            code = 0, value = 0}, {time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, value = 0}, {time = {tv_sec = 0, 
              tv_usec = 0}, type = 0, code = 0, value = 0}, {time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, 
            value = 0}, {time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, value = 0}, {time = {tv_sec = 0, 
              tv_usec = 0}, type = 0, code = 0, value = 0}, {time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, 
            value = 0}, {time = {tv_sec = 0, tv_usec = 0}, type = 0, code = 0, value = -1073745556}, {time = {
              tv_sec = 8585204, tv_usec = -1073745480}, type = 65524, code = 130, value = 0}}
        i = 1
        len = <value optimized out>
        code = <value optimized out>
#2  SDL_SYS_JoystickUpdate (joystick=0x8064898) at src/joystick/linux/SDL_sysjoystick.c:1163
        i = <value optimized out>
#3  0x00805e40 in SDL_JoystickUpdate () at src/joystick/SDL_joystick.c:568
No locals.
#4  0x007b9d17 in SDL_PumpEvents () at src/events/SDL_events.c:374
---Type <return> to continue, or q <return> to quit---
        _this = <value optimized out>
#5  0x007ba0ea in SDL_WaitEventTimeout (event=0xbffff394, timeout=0) at src/events/SDL_events.c:403
        expiration = 0
#6  0x007ba1b5 in SDL_PollEvent (event=0xbffff394) at src/events/SDL_events.c:385
No locals.
#7  0x08048ea8 in WatchJoystick (joystick=0x8064898) at ./testjoystick.c:50
        screen = 0x8060c58
        i = 0
        done = 0
        y = 134629576
        draw = 0
        axis_area = {{{x = 0, y = 0, w = 0, h = 0}, {x = 0, y = 0, w = 0, h = 0}}, {{x = 0, y = 0, w = 0, h = 0}, {x = 0, 
              y = 0, w = 0, h = 0}}, {{x = 0, y = 0, w = 0, h = 0}, {x = 0, y = 0, w = 0, h = 0}}, {{x = 0, y = 0, w = 0, 
              h = 0}, {x = 0, y = 0, w = 0, h = 0}}, {{x = 0, y = 0, w = 0, h = 0}, {x = 0, y = 0, w = 0, h = 0}}, {{x = 0, 
              y = 0, w = 0, h = 0}, {x = 0, y = 0, w = 0, h = 0}}}
        name = 0x83b9e0 "Logitech WingMan RumblePad"
        event = {type = 1 '\001', window = {type = 1 '\001', windowID = 1, event = 11 '\v', data1 = 0, data2 = 0}, key = {
            type = 1 '\001', windowID = 1, which = 11 '\v', state = 255 '\377', keysym = {scancode = SDL_SCANCODE_UNKNOWN, 
              sym = 0, mod = 61496, unicode = 8102040}}, edit = {type = 1 '\001', 
            text = "B\334\000\001\000\000\000\v\377\202\000\000\000\000\000\000\000\000\000\070\360\377\277\230\240{\000T\360\377\277\001", start = 0, length = 0}, text = {type = 1 '\001', windowID = 1, which = 11 '\v', 
            text = "\377\202\000\000\000\000\000\000\000\000\000\070\360\377\277\230\240{\000T\360\377\277\001\000\000\000\000\000\000\000"}, motion = {type = 1 '\001', windowID = 1, which = 11 '\v', state = 255 '\377', x = 0, y = 0, 
            z = -1073745864, pressure = 8102040, pressure_max = -1073745836, pressure_min = 1, rotation = 0, tilt = 0, 
            cursor = 8585204, xrel = 3, yrel = -1073745752}, button = {type = 1 '\001', windowID = 1, which = 11 '\v', 
            button = 255 '\377', state = 130 '\202', x = 0, y = 0}, wheel = {type = 1 '\001', windowID = 1, 
            which = 11 '\v', x = 0, y = 0}, jaxis = {type = 1 '\001', which = 66 'B', axis = 220 '\334', value = 1}, 
          jball = {type = 1 '\001', which = 66 'B', ball = 220 '\334', xrel = 1, yrel = 8584971}, jhat = {type = 1 '\001', 
            which = 66 'B', hat = 220 '\334', value = 0 '\000'}, jbutton = {type = 1 '\001', which = 66 'B', 
            button = 220 '\334', state = 0 '\000'}, quit = {type = 1 '\001'}, user = {type = 1 '\001', windowID = 1, 
            code = 8584971, data1 = 0x0, data2 = 0x0}, syswm = {type = 1 '\001', msg = 0x1}, proximity = {type = 1 '\001', 
            windowID = 1, which = 11 '\v', cursor = 0, x = 0, y = -1073745864}, active = {type = 1 '\001', gain = 66 'B', 
            state = 220 '\334'}, resize = {type = 1 '\001', w = 1, h = 8584971}}
        x = -1073744984
#8  0x080493bb in main (argc=2, argv=0xbffff4d4) at ./testjoystick.c:186
        name = 0x83b9e0 "Logitech WingMan RumblePad"
        i = 2
        joystick = 0x8064898
(gdb)
Comment 12 Sam Lantinga 2009-12-16 23:25:43 UTC
I was able to log on remotely and debug this.

It turns out that newer 2.6 kernels add an additional 'resolution' field to input_absinfo, which was overrunning the stack when querying the axis information.

This is fixed in subversion revision 5429.

Thanks!