[jitsi-dev] Problems with recent Libjitsi builds


#1

As the informational (i.e. INFO) message explains, the OSGi-aware
backend of LibJitsi failed to initialize and the library will attempt
to use an alternative (backend). The scenario is not exceptional given
that you're running an application which utilizes the LIbJitsi library
without OSGi integration. In other words, the exception you've
reported does not identify any "show stopper" and the application is
functioning as expected.

···

2013/5/31 <ijustwanttoregister@googlemail.com>:

    ant run-example -Drun.example.name=AVReceive2
-Drun.example.arg.line="--local-port-base=9999 --remote-host=127.0.0.1
--remote-port-base=9998"

     [java] INFO: Failed to initialize LibJitsi backend
org.jitsi.impl.libjitsi.LibJitsiOSGiImpl. (Exception stack trace follows.)
Will try an alternative.


#2

Thanks for the clarifications, Lyubomir. I was a little bit overwhelmed by
the number of exceptions flying around (this was not the only one) and
though that they are all somehow related to the LibJitsi.start() failing.
In the context of the same question, could you maybe comment on whether
these follow-up exceptions are critical?

[java] SEVERE: Failed to open PortAudioStream
     [java] org.jitsi.impl.neomedia.portaudio.PortAudioException: Undefined
external error.: errorCode= 1; hostApiType= paMME;
     [java] at org.jitsi.impl.neomedia.portaudio.Pa.OpenStream(Native
Method)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.portaudio.PortAudioStream.connect(PortAudioStream.java:340)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.portaudio.PortAudioStream.setDeviceID(PortAudioStream.java:708)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.portaudio.DataSource.doConnect(DataSource.java:139)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.AbstractPullBufferCaptureDevice$1.doConnect(AbstractPullBufferCaptureDevice.java:62)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.AbstractBufferCaptureDevice.connect(AbstractBufferCaptureDevice.java:110)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.AbstractPullBufferCaptureDevice.connect(AbstractPullBufferCaptureDevice.java:152)
     [java] at javax.media.Manager.createDataSource(Manager.java:384)
     [java] at
org.jitsi.impl.neomedia.ZrtpFortunaEntropyGatherer$GatherAudio.prepareAudioEntropy(ZrtpFortunaEntropyGatherer.java:176)
     [java] at
org.jitsi.impl.neomedia.ZrtpFortunaEntropyGatherer$GatherAudio.access$100(ZrtpFortunaEntropyGatherer.java:130)
     [java] at
org.jitsi.impl.neomedia.ZrtpFortunaEntropyGatherer.setEntropy(ZrtpFortunaEntropyGatherer.java:124)
     [java] at
org.jitsi.impl.neomedia.MediaServiceImpl.postInitializeOnce(MediaServiceImpl.java:1482)
     [java] at
org.jitsi.impl.neomedia.MediaServiceImpl.<init>(MediaServiceImpl.java:252)
     [java] at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     [java] at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
     [java] at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
     [java] at
java.lang.reflect.Constructor.newInstance(Constructor.java:525)
     [java] at java.lang.Class.newInstance0(Class.java:372)
     [java] at java.lang.Class.newInstance(Class.java:325)
     [java] at
org.jitsi.impl.libjitsi.LibJitsiImpl.getService(LibJitsiImpl.java:133)
     [java] at
org.jitsi.service.libjitsi.LibJitsi.invokeGetServiceOnImpl(LibJitsi.java:163)
     [java] at
org.jitsi.service.libjitsi.LibJitsi.getMediaService(LibJitsi.java:115)
     [java] at org.jitsi.examples.AVReceive2.initialize(AVReceive2.java:98)
     [java] at org.jitsi.examples.AVReceive2.main(AVReceive2.java:340)
     [java]
     [java] Mai 31, 2013 8:42:48 PM org.jitsi.util.Logger warn
     [java] WARNING: Got an IO Exception during entropy preparation
     [java] java.io.IOException: Undefined external error.
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.portaudio.PortAudioStream.connect(PortAudioStream.java:353)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.portaudio.PortAudioStream.setDeviceID(PortAudioStream.java:708)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.portaudio.DataSource.doConnect(DataSource.java:139)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.AbstractPullBufferCaptureDevice$1.doConnect(AbstractPullBufferCaptureDevice.java:62)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.AbstractBufferCaptureDevice.connect(AbstractBufferCaptureDevice.java:110)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.AbstractPullBufferCaptureDevice.connect(AbstractPullBufferCaptureDevice.java:152)
     [java] at javax.media.Manager.createDataSource(Manager.java:384)
     [java] at
org.jitsi.impl.neomedia.ZrtpFortunaEntropyGatherer$GatherAudio.prepareAudioEntropy(ZrtpFortunaEntropyGatherer.java:176)
     [java] at
org.jitsi.impl.neomedia.ZrtpFortunaEntropyGatherer$GatherAudio.access$100(ZrtpFortunaEntropyGatherer.java:130)
     [java] at
org.jitsi.impl.neomedia.ZrtpFortunaEntropyGatherer.setEntropy(ZrtpFortunaEntropyGatherer.java:124)
     [java] at
org.jitsi.impl.neomedia.MediaServiceImpl.postInitializeOnce(MediaServiceImpl.java:1482)
     [java] at
org.jitsi.impl.neomedia.MediaServiceImpl.<init>(MediaServiceImpl.java:252)
     [java] at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     [java] at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
     [java] at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
     [java] at
java.lang.reflect.Constructor.newInstance(Constructor.java:525)
     [java] at java.lang.Class.newInstance0(Class.java:372)
     [java] at java.lang.Class.newInstance(Class.java:325)
     [java] at
org.jitsi.impl.libjitsi.LibJitsiImpl.getService(LibJitsiImpl.java:133)
     [java] at
org.jitsi.service.libjitsi.LibJitsi.invokeGetServiceOnImpl(LibJitsi.java:163)
     [java] at
org.jitsi.service.libjitsi.LibJitsi.getMediaService(LibJitsi.java:115)
     [java] at org.jitsi.examples.AVReceive2.initialize(AVReceive2.java:98)
     [java] at org.jitsi.examples.AVReceive2.main(AVReceive2.java:340)
     [java] Caused by:
org.jitsi.impl.neomedia.portaudio.PortAudioException: Undefined external
error.: errorCode= 1; hostApiType= paMME;
     [java] at org.jitsi.impl.neomedia.portaudio.Pa.OpenStream(Native
Method)
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.portaudio.PortAudioStream.connect(PortAudioStream.java:340)
     [java] ... 22 more

I am also interested to know whether it is possible to switch off loading
of those bundles that will anyhow fail in the non-osgi/non-jitsi context:

1)
     [java] INFO: Failed to initialize service implementation
org.jitsi.impl.fileaccess.FileAccessServiceImpl. Will continue without it.
     [java] java.lang.IllegalStateException:
net.java.sip.communicator.SC_HOME_DIR_LOCATION
              at .... Traces

2)
     [java] INFO: Failed to initialize service implementation
org.jitsi.impl.resources.ResourceManagementServiceImpl. Will continue
without it.
     [java] java.lang.ClassNotFoundException:
org.jitsi.impl.resources.ResourceManagementServiceImpl
             at .... Traces

3)
     [java] INFO: Failed to initialize service implementation
org.jitsi.impl.packetlogging.PacketLoggingServiceImpl. Will continue
without it.
     [java] java.lang.ClassNotFoundException:
org.jitsi.impl.packetlogging.PacketLoggingServiceImpl
              at .... Traces

Transmitter/Receiver will be called multiple times on demand in our
production environment and it would be undesirable to have that many
false-positive alerts to be written into the log files of the application
server (we analyze them automatically and trigger emails notifications when
Exceptions of Errors occur).

Regards,
Alexander Fedulov

···

2013/5/31 Lyubomir Marinov <lyubomir.marinov@jitsi.org>

2013/5/31 <ijustwanttoregister@googlemail.com>:
> ant run-example -Drun.example.name=AVReceive2
> -Drun.example.arg.line="--local-port-base=9999 --remote-host=127.0.0.1
> --remote-port-base=9998"

> [java] INFO: Failed to initialize LibJitsi backend
> org.jitsi.impl.libjitsi.LibJitsiOSGiImpl. (Exception stack trace
follows.)
> Will try an alternative.

As the informational (i.e. INFO) message explains, the OSGi-aware
backend of LibJitsi failed to initialize and the library will attempt
to use an alternative (backend). The scenario is not exceptional given
that you're running an application which utilizes the LIbJitsi library
without OSGi integration. In other words, the exception you've
reported does not identify any "show stopper" and the application is
functioning as expected.


#3

[java] SEVERE: Failed to open PortAudioStream
     [java] org.jitsi.impl.neomedia.portaudio.PortAudioException: Undefined
external error.: errorCode= 1; hostApiType= paMME;

     [java] WARNING: Got an IO Exception during entropy preparation
     [java] java.io.IOException: Undefined external error.
     [java] at
org.jitsi.impl.neomedia.jmfext.media.protocol.portaudio.PortAudioStream.connect(PortAudioStream.java:353)

The PortAudioException above is an actual problem. It signifies that
(1) the PortAudio backend has malfunctioned on your system and (2) the
security based on ZRTP is left in a possibly compromised state.

I am also interested to know whether it is possible to switch off loading of
those bundles that will anyhow fail in the non-osgi/non-jitsi context:

org.jitsi.impl.fileaccess.FileAccessServiceImpl
org.jitsi.impl.resources.ResourceManagementServiceImpl
org.jitsi.impl.packetlogging.PacketLoggingServiceImpl

There is no support in libjitsi to disable the loading of these
services at present. Please feel free to make contributions on the
subject.

···

2013/5/31 <ijustwanttoregister@googlemail.com>:


#4

I was able to fix the PortAudio problem (it was a drivers-related issue of
my webcam). Now I have the following situation:

1) Receiver starts normally (I mean only those tolerable exceptions we
discussed are thrown), although after initialization it reports that:
     [java] SEVERE: No format has been registered for RTP Payload type 73
     [java] Jun 01, 2013 8:11:00 PM net.sf.fmj.media.Log error
     [java] SEVERE: No format has been registered for RTP Payload type 73

2) Tranmitter in its turn throws a multitute of the following Exceptions
(seems to be happening in a loop):

     [java] SEVERE: Failed to analyze an incoming RTCP packet for the
purposes of statistics.
     [java] java.io.IOException: Invalid Length
     [java] at
net.sf.fmj.media.rtp.RTCPHeader.<init>(RTCPHeader.java:148)
     [java] at
org.jitsi.impl.neomedia.transform.rtcp.StatisticsEngine.reverseTransform(StatisticsEngine.java:156)
     [java] at
org.jitsi.impl.neomedia.transform.TransformEngineChain$PacketTransformerChain.reverseTransform(TransformEngineChain.java:179)
     [java] at
org.jitsi.impl.neomedia.transform.TransformUDPInputStream.createRawPacket(TransformUDPInputStream.java:65)
     [java] at
org.jitsi.impl.neomedia.RTPConnectorInputStream.run(RTPConnectorInputStream.java:338)
     [java] at java.lang.Thread.run(Thread.java:722)

I checked an older build (number 53) and this problem it not present there.
Maybe you are aware of some related changes that have been made to the
project recently and point me to the latest version (newer than 53) that
should not have the described issue?

Regards,
Alexander Fedulov

···

2013/6/1 Lyubomir Marinov <lyubomir.marinov@jitsi.org>

2013/5/31 <ijustwanttoregister@googlemail.com>:
> [java] SEVERE: Failed to open PortAudioStream
> [java] org.jitsi.impl.neomedia.portaudio.PortAudioException:
Undefined
> external error.: errorCode= 1; hostApiType= paMME;

> [java] WARNING: Got an IO Exception during entropy preparation
> [java] java.io.IOException: Undefined external error.
> [java] at
>
org.jitsi.impl.neomedia.jmfext.media.protocol.portaudio.PortAudioStream.connect(PortAudioStream.java:353)

The PortAudioException above is an actual problem. It signifies that
(1) the PortAudio backend has malfunctioned on your system and (2) the
security based on ZRTP is left in a possibly compromised state.

> I am also interested to know whether it is possible to switch off
loading of
> those bundles that will anyhow fail in the non-osgi/non-jitsi context:

> org.jitsi.impl.fileaccess.FileAccessServiceImpl
> org.jitsi.impl.resources.ResourceManagementServiceImpl
> org.jitsi.impl.packetlogging.PacketLoggingServiceImpl

There is no support in libjitsi to disable the loading of these
services at present. Please feel free to make contributions on the
subject.


#5

Is there any chance that I will get an answer to the question regarding the
latest functioning version of should I start trying them out one by one
myself?

Regards,
Alexander Fedulov

···

2013/6/1 <ijustwanttoregister@googlemail.com>

I was able to fix the PortAudio problem (it was a drivers-related issue
of my webcam). Now I have the following situation:

1) Receiver starts normally (I mean only those tolerable exceptions we
discussed are thrown), although after initialization it reports that:
     [java] SEVERE: No format has been registered for RTP Payload type 73
     [java] Jun 01, 2013 8:11:00 PM net.sf.fmj.media.Log error
     [java] SEVERE: No format has been registered for RTP Payload type 73

2) Tranmitter in its turn throws a multitute of the following Exceptions
(seems to be happening in a loop):

     [java] SEVERE: Failed to analyze an incoming RTCP packet for the
purposes of statistics.
     [java] java.io.IOException: Invalid Length
     [java] at
net.sf.fmj.media.rtp.RTCPHeader.<init>(RTCPHeader.java:148)
     [java] at
org.jitsi.impl.neomedia.transform.rtcp.StatisticsEngine.reverseTransform(StatisticsEngine.java:156)
     [java] at
org.jitsi.impl.neomedia.transform.TransformEngineChain$PacketTransformerChain.reverseTransform(TransformEngineChain.java:179)
     [java] at
org.jitsi.impl.neomedia.transform.TransformUDPInputStream.createRawPacket(TransformUDPInputStream.java:65)
     [java] at
org.jitsi.impl.neomedia.RTPConnectorInputStream.run(RTPConnectorInputStream.java:338)
     [java] at java.lang.Thread.run(Thread.java:722)

I checked an older build (number 53) and this problem it not present
there. Maybe you are aware of some related changes that have been made to
the project recently and point me to the latest version (newer than 53)
that should not have the described issue?

Regards,
Alexander Fedulov

2013/6/1 Lyubomir Marinov <lyubomir.marinov@jitsi.org>

2013/5/31 <ijustwanttoregister@googlemail.com>:
> [java] SEVERE: Failed to open PortAudioStream
> [java] org.jitsi.impl.neomedia.portaudio.PortAudioException:
Undefined
> external error.: errorCode= 1; hostApiType= paMME;

> [java] WARNING: Got an IO Exception during entropy preparation
> [java] java.io.IOException: Undefined external error.
> [java] at
>
org.jitsi.impl.neomedia.jmfext.media.protocol.portaudio.PortAudioStream.connect(PortAudioStream.java:353)

The PortAudioException above is an actual problem. It signifies that
(1) the PortAudio backend has malfunctioned on your system and (2) the
security based on ZRTP is left in a possibly compromised state.

> I am also interested to know whether it is possible to switch off
loading of
> those bundles that will anyhow fail in the non-osgi/non-jitsi context:

> org.jitsi.impl.fileaccess.FileAccessServiceImpl
> org.jitsi.impl.resources.ResourceManagementServiceImpl
> org.jitsi.impl.packetlogging.PacketLoggingServiceImpl

There is no support in libjitsi to disable the loading of these
services at present. Please feel free to make contributions on the
subject.


#6

I'm afraid I don't understand what problem exactly you're experiencing
as a consequence of the above. Could you please give us further
details to allows to estimate the severity of the issue and plan when
to look into it? The IOException in StatisticsEngine is handled so it
should not have a terminal effect (by itself).

···

2013/6/1 <ijustwanttoregister@googlemail.com>:

1) Receiver starts normally (I mean only those tolerable exceptions we
discussed are thrown), although after initialization it reports that:
     [java] SEVERE: No format has been registered for RTP Payload type 73
     [java] Jun 01, 2013 8:11:00 PM net.sf.fmj.media.Log error
     [java] SEVERE: No format has been registered for RTP Payload type 73

2) Tranmitter in its turn throws a multitute of the following Exceptions
(seems to be happening in a loop):

     [java] SEVERE: Failed to analyze an incoming RTCP packet for the
purposes of statistics.
     [java] java.io.IOException: Invalid Length
     [java] at
net.sf.fmj.media.rtp.RTCPHeader.<init>(RTCPHeader.java:148)
     [java] at
org.jitsi.impl.neomedia.transform.rtcp.StatisticsEngine.reverseTransform(StatisticsEngine.java:156)