xpra icon
Bug tracker and wiki

Opened 4 years ago

Closed 4 years ago

#1057 closed defect (fixed)

Got draw errors with win32 client

Reported by: alas Owned by: alas
Priority: major Milestone: 0.16
Component: client Version: trunk
Keywords: Cc:

Description

Running a 0.16.0 r11392 win32 client against a 0.16.0 r11366 fedora 21 server playing video overnight, got some draw errors client side after about 4 hours (about 2 hours after getting some spinners, which probably aren't related, but seem worth at least mentioning).

(Also worth noting, about an hour before the client side drawing errors, I also saw some encoding errors server-side, which I put into #1056, along with the xpra info just in case.)

2015-12-15 17:28:49,532 server is not responding, drawing spinners over the windows
2015-12-15 17:28:49,844 server is OK again
2015-12-15 17:32:02,022 server is not responding, drawing spinners over the windows
2015-12-15 17:32:02,293 server is OK again
2015-12-15 21:14:59,871 draw error
Traceback (most recent call last):
  File "xpra\client\ui_client_base.pyc", line 2575, in _do_draw
  File "xpra\client\client_window_base.pyc", line 538, in draw_region
  File "xpra\client\window_backing_base.pyc", line 523, in draw_region
  File "xpra\client\window_backing_base.pyc", line 397, in paint_with_video_decoder
  File "xpra\client\window_backing_base.pyc", line 119, in do_clean_video_decoder
  File "xpra\codecs\dec_avcodec2\decoder.pyx", line 383, in xpra.codecs.dec_avcodec2.decoder.Decoder.clean (xpra/codecs/dec_avcodec2/decoder.c:5428)
  File "xpra\codecs\dec_avcodec2\decoder.pyx", line 411, in xpra.codecs.dec_avcodec2.decoder.Decoder.clean_decoder (xpra/codecs/dec_avcodec2/decoder.c:5884)
  File "xpra\codecs\dec_avcodec2\decoder.pyx", line 267, in xpra.codecs.dec_avcodec2.decoder.AVImageWrapper.clone_pixel_data (xpra/codecs/dec_avcodec2/decoder.c:3820
)
  File "xpra\codecs\image_wrapper.pyc", line 127, in clone_pixel_data
TypeError: 'NoneType' object does not support item assignment
2015-12-15 21:14:59,871 error processing draw packet
Traceback (most recent call last):
  File "xpra\client\ui_client_base.pyc", line 2515, in _draw_thread_loop
  File "xpra\client\ui_client_base.pyc", line 2575, in _do_draw
  File "xpra\client\client_window_base.pyc", line 538, in draw_region
  File "xpra\client\window_backing_base.pyc", line 523, in draw_region
  File "xpra\client\window_backing_base.pyc", line 397, in paint_with_video_decoder
  File "xpra\client\window_backing_base.pyc", line 119, in do_clean_video_decoder
  File "xpra\codecs\dec_avcodec2\decoder.pyx", line 383, in xpra.codecs.dec_avcodec2.decoder.Decoder.clean (xpra/codecs/dec_avcodec2/decoder.c:5428)
  File "xpra\codecs\dec_avcodec2\decoder.pyx", line 411, in xpra.codecs.dec_avcodec2.decoder.Decoder.clean_decoder (xpra/codecs/dec_avcodec2/decoder.c:5884)
  File "xpra\codecs\dec_avcodec2\decoder.pyx", line 267, in xpra.codecs.dec_avcodec2.decoder.AVImageWrapper.clone_pixel_data (xpra/codecs/dec_avcodec2/decoder.c:3820
)
  File "xpra\codecs\image_wrapper.pyc", line 127, in clone_pixel_data
TypeError: 'NoneType' object does not support item assignment
Exception ValueError: 'cannot convert float NaN to integer' in 'xpra.codecs.libav_common.av_log.log_callback_override' ignored
Exception ValueError: 'cannot convert float NaN to integer' in 'xpra.codecs.libav_common.av_log.log_callback_override' ignored
Traceback (most recent call last):
  File "logging\__init__.pyc", line 859, in emit
  File "logging\__init__.pyc", line 732, in format
  File "logging\__init__.pyc", line 473, in format
  File "logging\__init__.pyc", line 434, in formatTime
TypeError: %d format: a number is required, not float
Logged from file log.pyc, line 100
2015-12-15 21:14:59,966 avcodec error decoding 87829 bytes of h264 data
2015-12-15 21:14:59,966  frame 20, step 1 of 1
2015-12-15 21:14:59,966  options={'speed': 96, 'type': 'P', 'flush': 0, 'pts': 50, 'frame': 1, 'encoding': 'h264', 'quality': 96, 'csc': 'YUV444P'}
2015-12-15 21:14:59,966  decoder state:
2015-12-15 21:14:59,966   decoder_height = 492
2015-12-15 21:14:59,966   encoding = h264
2015-12-15 21:14:59,966   colorspace = YUV444P
2015-12-15 21:14:59,966   actual_colorspace = GBRP
2015-12-15 21:14:59,966   height = 492
2015-12-15 21:14:59,966   decoder_width = 510
2015-12-15 21:14:59,966   width = 510
2015-12-15 21:14:59,966   version = (56, 60, 100)
2015-12-15 21:14:59,966   formats = ['YUV422P', 'BGRX', 'GBRP', 'RGB', 'YUV420P', 'BGRA', 'ARGB', 'XRGB', 'YUV444P']
2015-12-15 21:14:59,966   frames = 20
2015-12-15 21:14:59,966   type = avcodec
2015-12-15 21:14:59,966   buffers = 0
2015-12-15 21:14:59,966 Error: decode failed on 87829 bytes of h264 data
2015-12-15 21:14:59,966  510x492 pixels using avcodec
2015-12-15 21:14:59,966  decoding options={'speed': 96, 'type': 'P', 'flush': 0, 'pts': 50, 'frame': 1, 'encoding': 'h264', 'quality': 96, 'csc': 'YUV444P'}
2015-12-15 23:44:47,104 server is not responding, drawing spinners over the windows
2015-12-15 23:44:52,062 server is OK again

Change History (2)

comment:1 Changed 4 years ago by Antoine Martin

Owner: changed from Antoine Martin to alas
  • TypeError: 'NoneType' object does not support item assignment is a rare race condition which should be fixed in r11412. (will backport)
  • Exception ValueError: 'cannot convert float NaN to integer' in 'xpra.codecs.libav_common.av_log.log_callback_override' ignored is much more tricky: I don't see how we can get a Python ValueError here as the only non plain-string "%s" formatting that we use is in calling the C function vsnprintf, so r11415 takes the unsophisticated approach of catching everything and trying to log what we have
  • the internal ffmpeg diagnostic messages for avcodec error decoding 87829 bytes of h264 data are probably the ones that caused the error just above.. which we cannot see. (so I'm ignoring this one for now)

Because of the very close timestamps, I believe those 3 errors are related.
The first one might have caused an error in ffmpeg decoding, which failed to get logged (the second error) and got reported as a general decoding failure (the third).


Errors firing in the new log callback override will look something like this (here with a simulated error):

Error in log callback at level 24
 on format string 'Warning: data is not aligned! This can lead to a speedloss\n':
 <type 'exceptions.ValueError'>: fake error

@afarr: re-assigning to you to see if you can hit this again - no need to try though explicitly though, I think this one should be extremely rare to begin with, and it might now be impossible to hit. (hopefully)

Last edited 4 years ago by Antoine Martin (previous) (diff)

comment:2 Changed 4 years ago by Antoine Martin

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.