Saturday, July 20, 2013

Analyzing


  1. Traceback (most recent call last):
  2.   File "/home/max/Desktop/flumotion-porting/flumotion/cache/component/9d1e41022a6588631fd0de57ffb5ddee/flumotion/component/feedcomponent.py", line 965, in handle_reset_event
  3.     if gstreamer.event_is_flumotion_reset(event):
  4.   File "/home/max/Desktop/flumotion-porting/flumotion/flumotion/common/gstreamer.py", line 176, in event_is_flumotion_reset
  5.     if event.get_structure() is None:
  6. AttributeError: 'PadProbeInfo' object has no attribute 'get_structure'

Here event is a PadProbeInfo: 
but need to be GstCaps so i can do 'GstCaps.get_structure' and then on the structure use '.get_name'

Another issue:

  1. Traceback (most recent call last):
  2.   File "/home/max/Desktop/flumotion-porting/flumotion/flumotion/common/gstreamer.py", line 51, in verbose_deep_notify_cb
  3.     value = orig.get_property(pspec.name)
  4. AttributeError: 'NoneType' object has no attribute 'name'

Tried printing pspec, the result was a printed None

Where does it go wrong?

Clues (everywhere i could find pspec):

https://github.com/bananadine/flumotion/blob/master/flumotion/common/gstreamer.py#L47

https://github.com/bananadine/flumotion/blob/master/flumotion/component/feedcomponent010.py#L413
https://github.com/bananadine/flumotion/blob/master/flumotion/component/producers/videotest/videotest.py#L90
https://github.com/bananadine/flumotion/blob/master/flumotion/common/pygobject.py#L38

2 comments :

  1. On the pspec issue you need a longer trace.
    The trace you have says that None was passed to verbose_deep_notify_cb https://github.com/bananadine/flumotion/blob/master/flumotion/common/gstreamer.py#L47 .
    You verified this by printing pspec out and getting None.
    To debug you need the fuller stacktrace. Flumotion has been interesting so far in that it swallows exceptions.
    Once you find where verbose_deep_notify_cb is called (I expect as a callback...) you'll be able to see what is passed to it, and what is for some reason coming back as None.

    ReplyDelete
    Replies
    1. How do i get a fuller stacktrace? I tried strace and i found this in the output:
      4718 write(2, "value = orig.get_property(pspec."..., 38
      4739 close(13
      4735 rt_sigaction(SIGSEGV, {0xb4a37200, [], 0},
      4739 <... close resumed> ) = 0
      4735 <... rt_sigaction resumed> {SIG_DFL, [], 0}, 8) = 0
      4718 <... write resumed> ) = 38
      4717 <... open resumed> ) = -1 ENOENT (No such file or directory)
      4718 close(17
      4735 rt_sigaction(SIGSEGV, {SIG_DFL, [], 0},

      and this

      4717 open("/home/max/Desktop/flumotion-porting/flumotion/cache/base-component-http/fb9644667440997eb6bfe913f446ab7e/flumotion/component/flumotion.py", O_RDONLY|O_LARGEFILE
      4738 write(2, "value = orig.get_property(pspec."..., 38
      4717 <... open resumed> ) = -1 ENOENT (No such file or directory)
      4738 <... write resumed> ) = 38
      4714 <... stat64 resumed> 0xbf97726c) = -1 ENOENT (No such file or directory)
      4738 close(17

      Delete