Mailing List Archive

End-of-recording crash (Re: Vacation.)
On Fri, Oct 18, 2002 at 05:09:27PM -0400, Isaac Richards wrote:

> I'm going to be gone on vacation until the 26th. If there haven't been any
> major bugreports (assuming I get a backtrace of that crash on finished
> playing bug), and Thor and Chuck commit things to CVS <grin>, I'll put the
> 0.7 release out the 27th or so.

Here's a backtrace of that particular crash:

#0 0x4097765e in _IO_stderr_ () from /lib/libc.so.6
#1 0x40789c68 in _X11TransBytesReadable () from /usr/X11R6/lib/libX11.so.6
#2 0x4076eaaf in _XEventsQueued () from /usr/X11R6/lib/libX11.so.6
#3 0x4076377f in XPending () from /usr/X11R6/lib/libX11.so.6
#4 0x0809851c in XvVideoOutput::CheckEvents (this=0x83cd858) at XJ.cpp:335
#5 0x080826e2 in NuppelVideoPlayer::CheckEvents (this=0x40d6e008)
at NuppelVideoPlayer.cpp:993
#6 0x08077e34 in TV::RunTV (this=0x8257e70) at tv.cpp:952
#7 0x08077d68 in TV::EventThread (param=0x8257e70) at tv.cpp:922
#8 0x40723fa5 in pthread_start_thread () from /lib/libpthread.so.0
#9 0x40723fed in pthread_start_thread_event () from /lib/libpthread.so.0

Pretty curious. XPending is being passed what looks like a reasonable Display,
as far as I can tell:

(gdb) print this->XJ_disp
$5 = (Display *) 0x83cd988
(gdb) print *(this->XJ_disp)
$6 = <incomplete type>

I'm planning to upgrade my XFree86 on that system sometime soon, at which point
I will be able to easily install xlibs-dbg and see what is going on inside
libX11. Currently, it is running some of the 4.2.1 pre-release debs.
Upgrading X on this system is non-trivial, because I need to rebuild the gatos
drivers as well.

Here's a dump of the XvVideoOutput object, in case that's useful.

(gdb) print *this
$4 = {XJ_SHMInfo = {shmseg = 8388611, shmid = 5931015,
shmaddr = 0x4182d000 <Address 0x4182d000 out of bounds>, readOnly = 0},
XJ_screen = 0x83ce938, XJ_disp = 0x83cd988, XJ_root = 58, XJ_win = 8388609,
XJ_image = 0x83ced28, XJ_ev = {type = 0, xany = {type = 0, serial = 0,
send_event = 0, display = 0x0, window = 0}, xkey = {type = 0,
serial = 0, send_event = 0, display = 0x0, window = 0, root = 0,
subwindow = 0, time = 0, x = 0, y = 0, x_root = 0, y_root = 0,
state = 0, keycode = 0, same_screen = 0}, xbutton = {type = 0,
serial = 0, send_event = 0, display = 0x0, window = 0, root = 0,
subwindow = 0, time = 0, x = 0, y = 0, x_root = 0, y_root = 0,
state = 0, button = 0, same_screen = 0}, xmotion = {type = 0,
serial = 0, send_event = 0, display = 0x0, window = 0, root = 0,
subwindow = 0, time = 0, x = 0, y = 0, x_root = 0, y_root = 0,
state = 0, is_hint = 0 '\0', same_screen = 0}, xcrossing = {type = 0,
serial = 0, send_event = 0, display = 0x0, window = 0, root = 0,
subwindow = 0, time = 0, x = 0, y = 0, x_root = 0, y_root = 0, mode = 0,
detail = 0, same_screen = 0, focus = 0, state = 0}, xfocus = {type = 0,
serial = 0, send_event = 0, display = 0x0, window = 0, mode = 0,
detail = 0}, xexpose = {type = 0, serial = 0, send_event = 0,
display = 0x0, window = 0, x = 0, y = 0, width = 0, height = 0,
count = 0}, xgraphicsexpose = {type = 0, serial = 0, send_event = 0,
display = 0x0, drawable = 0, x = 0, y = 0, width = 0, height = 0,
count = 0, major_code = 0, minor_code = 0}, xnoexpose = {type = 0,
serial = 0, send_event = 0, display = 0x0, drawable = 0, major_code = 0,
minor_code = 0}, xvisibility = {type = 0, serial = 0, send_event = 0,
display = 0x0, window = 0, state = 0}, xcreatewindow = {type = 0,
serial = 0, send_event = 0, display = 0x0, parent = 0, window = 0,
x = 0, y = 0, width = 0, height = 0, border_width = 0,
override_redirect = 0}, xdestroywindow = {type = 0, serial = 0,
send_event = 0, display = 0x0, event = 0, window = 0}, xunmap = {
type = 0, serial = 0, send_event = 0, display = 0x0, event = 0,
window = 0, from_configure = 0}, xmap = {type = 0, serial = 0,
send_event = 0, display = 0x0, event = 0, window = 0,
override_redirect = 0}, xmaprequest = {type = 0, serial = 0,
send_event = 0, display = 0x0, parent = 0, window = 0}, xreparent = {
type = 0, serial = 0, send_event = 0, display = 0x0, event = 0,
window = 0, parent = 0, x = 0, y = 0, override_redirect = 0},
xconfigure = {type = 0, serial = 0, send_event = 0, display = 0x0,
event = 0, window = 0, x = 0, y = 0, width = 0, height = 0,
border_width = 0, above = 0, override_redirect = 0}, xgravity = {
type = 0, serial = 0, send_event = 0, display = 0x0, event = 0,
window = 0, x = 0, y = 0}, xresizerequest = {type = 0, serial = 0,
send_event = 0, display = 0x0, window = 0, width = 0, height = 0},
xconfigurerequest = {type = 0, serial = 0, send_event = 0, display = 0x0,
parent = 0, window = 0, x = 0, y = 0, width = 0, height = 0,
border_width = 0, above = 0, detail = 0, value_mask = 0}, xcirculate = {
type = 0, serial = 0, send_event = 0, display = 0x0, event = 0,
window = 0, place = 0}, xcirculaterequest = {type = 0, serial = 0,
send_event = 0, display = 0x0, parent = 0, window = 0, place = 0},
xproperty = {type = 0, serial = 0, send_event = 0, display = 0x0,
window = 0, atom = 0, time = 0, state = 0}, xselectionclear = {type = 0,
serial = 0, send_event = 0, display = 0x0, window = 0, selection = 0,
time = 0}, xselectionrequest = {type = 0, serial = 0, send_event = 0,
display = 0x0, owner = 0, requestor = 0, selection = 0, target = 0,
property = 0, time = 0}, xselection = {type = 0, serial = 0,
send_event = 0, display = 0x0, requestor = 0, selection = 0, target = 0,
property = 0, time = 0}, xcolormap = {type = 0, serial = 0,
send_event = 0, display = 0x0, window = 0, colormap = 0, c_new = 0,
state = 0}, xclient = {type = 0, serial = 0, send_event = 0,
display = 0x0, window = 0, message_type = 0, format = 0, data = {
b = '\0' <repeats 19 times>, s = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, l = {
0, 0, 0, 0, 0}}}, xmapping = {type = 0, serial = 0, send_event = 0,
display = 0x0, window = 0, request = 0, first_keycode = 0, count = 0},
xerror = {type = 0, display = 0x0, resourceid = 0, serial = 0,
error_code = 0 '\0', request_code = 0 '\0', minor_code = 0 '\0'},
xkeymap = {type = 0, serial = 0, send_event = 0, display = 0x0,
window = 0, key_vector = '\0' <repeats 31 times>}, pad = {
0 <repeats 24 times>}}, XJ_gc = 0x83cecb0, XJ_screen_num = 0,
XJ_white = 65535, XJ_black = 0, XJ_started = 1, XJ_depth = 16,
XJ_caught_error = 0, XJ_width = 480, XJ_height = 480, XJ_screenwidth = 800,
XJ_screenheight = 600, XJ_fullscreen = 1, oldx = 0, oldy = 0, oldw = 480,
oldh = 480, curx = -40, cury = -30, curw = 881, curh = 673, hints = {
flags = 780, x = -40, y = -30, width = 881, height = 673, min_width = 0,
min_height = 0, max_width = 0, max_height = 0, width_inc = 0,
height_inc = 0, min_aspect = {x = 0, y = 0}, max_aspect = {x = 0, y = 0},
base_width = 881, base_height = 673, win_gravity = 10}, xv_port = 55,
colorid = 808596553, scratchspace = 0x0}


--
- mdz
Re: End-of-recording crash (Re: Vacation.) [ In reply to ]
On Sunday 20 October 2002 11:05 pm, Matt Zimmerman wrote:
> On Fri, Oct 18, 2002 at 05:09:27PM -0400, Isaac Richards wrote:
> > I'm going to be gone on vacation until the 26th. If there haven't been
> > any major bugreports (assuming I get a backtrace of that crash on
> > finished playing bug), and Thor and Chuck commit things to CVS <grin>,
> > I'll put the 0.7 release out the 27th or so.
>
> Here's a backtrace of that particular crash:

Thanks. I just checked in something that should fix this -- it was just a
fairly simple little race between the tv object checking for key presses, and
the video player killing its own output device.

Isaac