libqmi 1.18.0-1 FTBFS when building against glib2.0-2.53.1-1 (or later)

Bug #1699599 reported by Tiago Stürmer Daitx
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
libqmi (Debian)
Fix Released
Unknown
libqmi (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

After the Debian sync that update libqmi from 1.16.2-1 to 1.18.0-1, the package FTBFS due to a new step in the test setup for the test-generated suite.

== Current FTBFS (from the our artful buildlog) ==
TEST: test-generated... (pid=17634)
  /libqmi-glib/generated/core:
(/<<PKGBUILDDIR>>/src/libqmi-glib/test/.libs/test-generated:17634): GLib-CRITICAL **: g_file_test: assertion 'filename != NULL' failed
FAIL

== Expected (from Debian's buildlog) ==
TEST: test-generated... (pid=8773)
  /libqmi-glib/generated/core: OK
  /libqmi-glib/generated/dms/get-ids: OK
  /libqmi-glib/generated/dms/uim-get-pin-status: OK
  /libqmi-glib/generated/dms/uim-verify-pin: OK
  /libqmi-glib/generated/dms/get-time: OK
  /libqmi-glib/generated/nas/network-scan: OK
  /libqmi-glib/generated/nas/get-cell-location-info: OK
PASS: test-generated

== Backtrace ==
#0 0x00007ffff7113ff1 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1 0x00007ffff71152ed in g_logv () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007ffff711544f in g_log () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007ffff70fa42a in g_file_test () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4 0x00007ffff7a1ca03 in __qmi_utils_get_driver (cdc_wdm_path=<optimized out>)
    at qmi-utils.c:746
#5 0x00007ffff7a21be7 in device_open_context_step (ctx=0x55555576b0f0) at qmi-device.c:2157
#6 0x0000555555557b5e in test_fixture_setup (fixture=0x55555576ba00) at test-fixture.c:156
#7 0x00007ffff71352c5 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#8 0x00007ffff713549f in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#9 0x00007ffff713549f in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007ffff71356ae in g_test_run_suite () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007ffff71356d1 in g_test_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x0000555555557352 in main (argc=<optimized out>, argv=<optimized out>)
    at test-generated.c:665

== strace ==
lstat("/sys", {st_dev=makedev(0, 18), st_ino=1, st_mode=S_IFDIR|0555, st_nlink=13, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=0, st_size=0, st_atime=2017-06-21T16:17:32+0000.691480392, st_mtime=2017-06-19T06:48:49+0000.504000019, st_ctime=2017-06-19T06:48:49+0000.504000019}) = 0
lstat("/sys/class", {st_dev=makedev(0, 18), st_ino=10, st_mode=S_IFDIR|0755, st_nlink=73, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=0, st_size=0, st_atime=2017-06-21T15:46:45+0000.176007545, st_mtime=2017-06-19T06:48:49+0000.532000158, st_ctime=2017-06-19T06:48:49+0000.532000158}) = 0
lstat("/sys/class/usbmisc", {st_dev=makedev(0, 18), st_ino=107497, st_mode=S_IFDIR|0755, st_nlink=2, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=0, st_size=0, st_atime=2017-06-21T15:46:45+0000.200007699, st_mtime=2017-06-21T15:46:45+0000.196007673, st_ctime=2017-06-21T15:46:45+0000.196007673}) = 0
lstat("/sys/class/usbmisc/qmi000314190000", 0x7ffc6fc9ec20) = -1 ENOENT (No such file or directory)
getpeername(2, 0x7ffc6fc9e800, [128]) = -1 ENOTSOCK (Socket operation on non-socket)
futex(0x7f2423d66e28, FUTEX_WAKE_PRIVATE, 2147483647) = 0
ioctl(2, TCGETS, {c_iflags=0x4500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0
brk(0x5567ac071000) = 0x5567ac071000
brk(0x5567ac069000) = 0x5567ac069000
write(2, "\n(/build/libqmi-cr4ivg/libqmi-1.18.0/src/libqmi-glib/test/.libs/test-generated:31419): GLib-\33[1;35mCRITICAL\33[0m **: g_file_test: assertion 'filename != NULL' failed\n", 165) = 165
--- SIGTRAP {si_signo=SIGTRAP, si_code=SI_KERNEL} ---
+++ killed by SIGTRAP (core dumped) +++

== Error source ==
The following (snipped) patch introduced the new test that is now failing:

--- libqmi-1.16.2/src/libqmi-glib/qmi-utils.c 2016-07-13 07:27:23.000000000 -0700
+++ libqmi-1.18.0/src/libqmi-glib/qmi-utils.c 2017-03-21 06:26:54.000000000 -0700
@@ -1078,27 +720,49 @@

 /*****************************************************************************/

+gchar *
+__qmi_utils_get_driver (const gchar *cdc_wdm_path)
+{
+ static const gchar *subsystems[] = { "usbmisc", "usb" };
+ guint i;
+ gchar *device_basename;
+ gchar *driver = NULL;
+
+ device_basename = g_path_get_basename (cdc_wdm_path);
+
+ for (i = 0; !driver && i < G_N_ELEMENTS (subsystems); i++) {
+ gchar *tmp;
+ gchar *path;
+
+ /* driver sysfs can be built directly using subsystem and name; e.g. for subsystem
+ * usbmisc and name cdc-wdm0:
+ * $ realpath /sys/class/usbmisc/cdc-wdm0/device/driver
+ * /sys/bus/usb/drivers/qmi_wwan
+ */
+ tmp = g_strdup_printf ("/sys/class/%s/%s/device/driver", subsystems[i], device_basename);
+ path = canonicalize_file_name (tmp);
+ g_free (tmp);
+
+ if (g_file_test (path, G_FILE_TEST_EXISTS))
+ driver = g_path_get_basename (path);
+ g_free (path);
+ }
+
+ g_free (device_basename);
+
+ return driver;
+}
+
+/*****************************************************************************/

--- libqmi-1.16.2/src/libqmi-glib/qmi-device.c 2016-11-07 01:58:29.000000000 -0800
+++ libqmi-1.18.0/src/libqmi-glib/qmi-device.c 2017-03-21 06:26:54.000000000 -0700
@@ -2285,6 +2153,60 @@
         ctx->step++;
         /* Fall down */

+ case DEVICE_OPEN_CONTEXT_STEP_DRIVER:
+ ctx->driver = __qmi_utils_get_driver (ctx->self->priv->path);
+ if (ctx->driver)
+ g_debug ("[%s] loaded driver of cdc-wdm port: %s", ctx->self->priv->path_display
, ctx->driver);
+ else if (!ctx->self->priv->no_file_check)
+ g_warning ("[%s] couldn't load driver of cdc-wdm port", ctx->self->priv->path_di
splay);

== Notes ==
For some reason it seems that the device is not being created (or found) at the expected path. Buildlogs from Debian indicates that the tests were run and all passed.

The test fails on an artful chroot (artful host) and on the artful host itself. It passes on a debian experimental, xenial, yakkety and zesty chroots (all running on the same artful host).

Tags: ftbfs
description: updated
description: updated
description: updated
summary: - [FTBFS] libqmi 1.18.0-1 fails test during build time
+ libqmi 1.18.0-1 FTBFS on artful due to test failure
tags: added: ftbfs
Revision history for this message
Tiago Stürmer Daitx (tdaitx) wrote : Re: libqmi 1.18.0-1 FTBFS on artful due to test failure

Tracked the error down to glib2.0 version update from 2.52.0-1 to 2.53.1-1 (and later versions).

They introduced an additional NULL check to g_file_test [1] that now breaks this particular test, as the code in qmi-utils.c provides a NULL `path` to g_file_test.

[1] https://bugzilla.gnome.org/show_bug.cgi?id=755046

summary: - libqmi 1.18.0-1 FTBFS on artful due to test failure
+ libqmi 1.18.0-1 FTBFS when building against glib2.0-2.53.1-1 (or later)
Revision history for this message
Tiago Stürmer Daitx (tdaitx) wrote :

Upstream patch with DEP3 header.

Revision history for this message
Tiago Stürmer Daitx (tdaitx) wrote :

Debdiff between 1.18.0-1 (Artful) and 1.18.0-1ubuntu1 (to sponsor a new upload).

Changed in libqmi (Debian):
status: Unknown → New
Changed in libqmi (Debian):
status: New → Fix Released
Simon Quigley (tsimonq2)
Changed in libqmi (Ubuntu):
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.