Usage of libqmi APIs
Aleksander Morgado
aleksandermj at chromium.org
Mon Aug 14 11:39:34 UTC 2023
Hey,
>> I am trying to configure and control a Sierra modem (RC series) connected to my Linux PC with an experimental code put together from different sources in the internet and libqmi API manual. The sample code is attached. I am not sure if there is any issue with the way I am using the libqmi APIs, but the code seems to work for most of the time, but rarely it gets stuck in g_poll() even though I am using timeouts in each and every libqmi API used.
>>
>> #0 0x0000007fb0297e6c in _GI__poll (fds=fds at entry=0x7fdea36d30, nfds=nfds at entry=1, timeout=timeout at entry=-1)
>> at /usr/src/debug/glibc/2.36-r0/sysdeps/unix/sysv/linux/poll.c:41
>> #1 0x0000007fb04a7c6c in g_poll (fds=fds at entry=0x7fdea36d30, nfds=nfds at entry=1, timeout=timeout at entry=-1)
>> at /usr/src/debug/glib-2.0/1_2.72.3-r0/glib/gpoll.c:125
>> #2 0x0000007fb06e7708 in g_unix_input_stream_read (stream=<optimized out>, buffer=0x7fdea36d78, count=2048, cancellable=0x0,
>> error=0x7fdea36d70) at /usr/src/debug/glib-2.0/1_2.72.3-r0/gio/gunixinputstream.c:348
>> #3 0x0000007faf128960 in input_ready_cb (istream=0x558e7c5660, self=0x558e7c4f10)
>> at /usr/src/debug/libqmi/1.32.4-r0/src/libqmi-glib/qmi-endpoint-qmux.c:73
>> #4 0x0000007fb0497f7c in g_main_dispatch (context=0x558e7527f0) at /usr/src/debug/glib-2.0/1_2.72.3-r0/glib/gmain.c:3417
>> #5 g_main_context_dispatch (context=context at entry=0x558e7527f0) at /usr/src/debug/glib-2.0/1_2.72.3-r0/glib/gmain.c:4135
>> #6 0x0000007fb049832c in g_main_context_iterate (context=0x558e7527f0, block=block at entry=1, dispatch=dispatch at entry=1,
>> self=<optimized out>) at /usr/src/debug/glib-2.0/1_2.72.3-r0/glib/gmain.c:4211
>> #7 0x0000007fb04986a8 in g_main_loop_run (loop=0x558e752b90) at /usr/src/debug/glib-2.0/1_2.72.3-r0/glib/gmain.c:4411
>>
>> The same code works fine with no issues with a 4G dongle. I am not sure if there is any limitation in the Sierra modem or any unhandled case in libqmi, specific to this Sierra modem I am using. Any inputs that can shed some light onto this issue are highly appreciated.
>>
I'm afraid this backtrace is not enough to try to understand what your
issue may be, sorry. One thing that bugs me is that input_ready_cb()
is called whenever new data is available, and therefore reading from
the input stream should not block in poll(). I didn't dig into the
glib code for this, but that doesn't sound completely right.
--
Aleksander
More information about the libqmi-devel
mailing list