LIBQMI APIs Response "Transaction timed out"

Sai Chaitanya msaichaitanya at gmail.com
Thu Aug 10 10:20:21 UTC 2023


My gdb call stack reveals that the process gets stuck in gl_poll

Inside input_ready_cb(), function, there is a call
to g_pollable_input_stream_read_nonblocking(), which never seems to finish.
And even though it says 'nonblocking', my single threaded program gets
stuck here.

(gdb) bt
#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

On Thu, Aug 10, 2023 at 9:26 AM Sai Chaitanya <msaichaitanya at gmail.com>
wrote:

> Hi,
>
> I am also getting the same issue. I am using libqmi 1.32.4.
> Setup: RC7620 connected to Linux PC via a Sierra's REDmangOH board.
> I am using the same set of APIs to configure the modem.
> I have attached a sample code in my previous email.
> I am attaching it now also, for your kind reference.
>
> Also, we analyzed the QMDL logs and confirmed that the modem is sending
> information correctly, but libqmi is not picking up the information, but
> declaring 'timeout' instead.
>
> *MSG                      [      ds3gmmgsdiif.c   3101] Sending Request
> for Reading ICCID*
>
> *MSG                      [      ds3gmmgsdiif.c   5127] Sending Read
> Transparent on Session Type [0]for Session Id [2091824495]*
>
> *MSG                      [            qpIsim.c   3422]
> qpAMSSReadEF_USIM_ICCID - iLen=10*
>
> *MSG                      [            qpIsim.c   3458]
> qpAMSSReadEF_USIM_ICCID - ICCID is 89840480003887584858*
>
> *MSG                      [            qpIsim.c  12882]
> qpDplProcessSessionCardEvent - return status is 1*
>
> And like Truong Phi mentioned, it happens only sometimes. Not sure what is
> causing the issue.
>
>
> Any inputs towards fixing this are highly appreciated.
>
>
> Regards,
>
> Sai.
>
> On Thu, Aug 10, 2023 at 6:35 AM Truong Phi <phitruong220675 at gmail.com>
> wrote:
>
>> Hi,
>>
>> We are using some libqmi APIs like the below:
>> qmi_client_uim_register_events_finish()
>> qmi_client_uim_get_slot_status_finish()
>> qmi_client_uim_get_card_status_finish()
>> qmi_client_dms_swi_get_current_firmware_finish()
>> qmi_client_dms_set_event_report_finish()
>> qmi_client_uim_get_slot_status_finish()
>>
>> When testing for a long time, some of these APIs respond with an error
>> message: "Transaction timed out".
>>
>> We checked the logs from the modem side and the chipset provider
>> (Qualcomm) also confirmed with us that the modem replies to the QMI success.
>> Example:
>> In case qmi_client_uim_get_slot_status_finish()
>> The module replied:
>> ...
>> MsgType = QMI_UIM_GET_CARD_STATUS
>> ...
>> resp {
>> result = QMI_RESULT_SUCCESS
>> error = QMI_ERR_NONE
>> }
>> ...
>>
>> ...
>> MsgType = QMI_UIM_GET_SLOTS_STATUS
>> ...
>> resp {
>> result = QMI_RESULT_SUCCESS
>> error = QMI_ERR_NONE
>> }
>> ...
>> physical_slot_status[0] {
>> physical_card_status = UIM_PHYSICAL_CARD_STATE_PRESENT
>> physical_slot_state = UIM_PHYSICAL_SLOT_STATE_ACTIVE
>> ...
>>
>> But the error message is: "Transaction timed out".
>>
>> Anything can be the cause of these problems? How can we avoid it?
>>
>> Thanks,
>> Truong
>>
>
>
> --
>
>


--
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libqmi-devel/attachments/20230810/2f02d5f1/attachment.htm>


More information about the libqmi-devel mailing list