hughsie / colord

Making color management just work

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

1.4.7: test suite fails in `colord-test-private` unit

kloczek opened this issue · comments

Meson output
+ /usr/bin/meson setup --buildtype=plain --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/libexec --bindir=/usr/bin --sbindir=/usr/sbin --includedir=/usr/include --datadir=/usr/share --mandir=/usr/share/man --infodir=/usr/share/info --localedir=/usr/share/locale --sysconfdir=/etc --localstatedir=/var --sharedstatedir=/var/lib --wrap-mode=nodownload --auto-features=enabled . x86_64-redhat-linux-gnu -D argyllcms_sensor=false -D bash_completion=false -D daemon_user=colord -D installed_tests=true -D libcolordcompat=true -D print_profiles=false -D sane=false -D vapi=true
The Meson build system
Version: 1.3.1
Source dir: /home/tkloczko/rpmbuild/BUILD/colord-1.4.7
Build dir: /home/tkloczko/rpmbuild/BUILD/colord-1.4.7/x86_64-redhat-linux-gnu
Build type: native build
Project name: colord
Project version: 1.4.7
C compiler for the host machine: /usr/bin/gcc (gcc 14.0.1 "gcc (GCC) 14.0.1 20240118 (Red Hat 14.0.1-0)")
C linker for the host machine: /usr/bin/gcc ld.bfd 2.41-29
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: YES (/usr/bin/pkg-config) 2.1.0
Run-time dependency gio-2.0 found: YES 2.79.1
Run-time dependency glib-2.0 found: YES 2.79.1
Run-time dependency gmodule-2.0 found: YES 2.79.1
Run-time dependency gio-unix-2.0 found: YES 2.79.1
Run-time dependency lcms2 found: YES 2.15
Run-time dependency sqlite3 found: YES 3.45.0
Run-time dependency gusb found: YES 0.4.8
Run-time dependency gudev-1.0 found: YES 238
Library m found: YES
Run-time dependency libudev found: YES 251
Run-time dependency udev found: YES 251
Run-time dependency systemd found: YES 251
Run-time dependency libsystemd found: YES 251
Has header "pwd.h" : YES
Has header "syslog.h" : YES
Has header "unistd.h" : YES
Checking for function "getuid" : YES
Program vapigen found: YES (/usr/bin/vapigen)
Run-time dependency polkit-gobject-1 found: YES 124
Run-time dependency valgrind found: NO (tried pkgconfig)
Configuring config.h using configuration
Configuring cd-version.h using configuration
Run-time dependency gobject-introspection-1.0 found: YES 1.79.1
Dependency gobject-introspection-1.0 found: YES 1.79.1 (cached)
Program /usr/bin/g-ir-scanner found: YES (/usr/bin/g-ir-scanner)
Dependency gobject-introspection-1.0 found: YES 1.79.1 (cached)
Program /usr/bin/g-ir-compiler found: YES (/usr/bin/g-ir-compiler)
Program vapigen found: YES (/usr/bin/vapigen)
Configuring colord-daemon.test using configuration
Configuring colord-private.test using configuration
Configuring ch-version.h using configuration
Program msgfmt found: YES (/usr/bin/msgfmt)
Program msginit found: YES (/usr/bin/msginit)
Program msgmerge found: YES (/usr/bin/msgmerge)
Program xgettext found: YES (/usr/bin/xgettext)
Configuring colord-session.service using configuration
Configuring org.freedesktop.ColorHelper.service using configuration
Program gtkdoc-scan found: YES (/usr/bin/gtkdoc-scan)
Program gtkdoc-scangobj found: YES (/usr/bin/gtkdoc-scangobj)
Program gtkdoc-mkdb found: YES (/usr/bin/gtkdoc-mkdb)
Program gtkdoc-mkhtml found: YES (/usr/bin/gtkdoc-mkhtml)
Program gtkdoc-fixxref found: YES (/usr/bin/gtkdoc-fixxref)
Configuring colord.service using configuration
Configuring colord.conf using configuration
Configuring org.freedesktop.ColorManager.service using configuration
Configuring org.freedesktop.ColorManager.conf using configuration
Program xsltproc found: YES (/usr/bin/xsltproc)
WARNING: You should add the boolean check kwarg to the run_command call.
         It currently defaults to false,
         but it will default to true in future releases of meson.
         See also: https://github.com/mesonbuild/meson/issues/9300
Configuring 69-cd-sensors.rules using configuration
Configuring org.freedesktop.color.policy.in using configuration
Dependency gio-2.0 found: YES 2.79.1 (cached)
Program /usr/bin/glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Build targets in project: 168
NOTICE: Future-deprecated features used:
 * 0.56.0: {'dependency.get_pkgconfig_variable', 'meson.build_root', 'meson.source_root'}

colord 1.4.7

  User defined options
    auto_features   : enabled
    bindir          : /usr/bin
    buildtype       : plain
    datadir         : /usr/share
    includedir      : /usr/include
    infodir         : /usr/share/info
    libdir          : /usr/lib64
    libexecdir      : /usr/libexec
    localedir       : /usr/share/locale
    localstatedir   : /var
    mandir          : /usr/share/man
    prefix          : /usr
    sbindir         : /usr/sbin
    sharedstatedir  : /var/lib
    sysconfdir      : /etc
    wrap_mode       : nodownload
    argyllcms_sensor: false
    bash_completion : false
    daemon_user     : colord
    installed_tests : true
    libcolordcompat : true
    print_profiles  : false
    sane            : false
    vapi            : true

And ..

test suite fails with
+ cd /home/tkloczko/rpmbuild/BUILD
+ cd colord-1.4.7
+ /usr/bin/meson test -C x86_64-redhat-linux-gnu --num-processes 48 --print-errorlogs
ninja: Entering directory `/home/tkloczko/rpmbuild/BUILD/colord-1.4.7/x86_64-redhat-linux-gnu'
ninja: no work to do.
1/4 colord-test-daemon  SKIP            0.02s   exit status 77
2/4 colorhug-self-test  OK              0.04s
3/4 cd-self-test        FAIL            0.11s   killed by signal 6 SIGABRT
>>> MALLOC_PERTURB_=33 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 LD_LIBRARY_PATH=/home/tkloczko/rpmbuild/BUILD/colord-1.4.7/x86_64-redhat-linux-gnu/lib/colord ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 /home/tkloczko/rpmbuild/BUILD/colord-1.4.7/x86_64-redhat-linux-gnu/src/cd-self-test
――――――――――――――――――――――――――――――――――――― ✀  ―――――――――――――――――――――――――――――――――――――
stdout:
TAP version 13
# random seed: R02S4230d5d2f64aa6985d3ab44e014a6ce1
1..9
# Start of colord tests
ok 1 /colord/common
# Cd-DEBUG: CdMappingDb: trying to open database '/tmp/mapping.db'
# Cd-INFO: Using mapping database file /tmp/mapping.db
# Cd-DEBUG: CdMappingDb: altering table to repair: no such column: timestamp
# Cd-DEBUG: CdMappingDb: altering table to convert: no such table: mappings_v2
ok 2 /colord/mapping-db{alter}
# Cd-DEBUG: CdMappingDb: trying to open database '/tmp/mapping.db'
# Cd-INFO: Using mapping database file /tmp/mapping.db
# Cd-DEBUG: CdMappingDb: altering table to convert: no such table: mappings_v2
ok 3 /colord/mapping-db{convert}
# Cd-DEBUG: CdMappingDb: trying to open database '/tmp/mapping.db'
# Cd-INFO: Using mapping database file /tmp/mapping.db
# Cd-DEBUG: CdMappingDb: creating table to repair: no such table: mappings
# Cd-DEBUG: CdMappingDb: altering table to convert: no such table: mappings_v2
# Cd-DEBUG: CdMappingDb: add device1<=>profile1
# Cd-DEBUG: CdMappingDb: add device1<=>profile2
# Cd-DEBUG: CdMappingDb: add device1<=>profile3
# Cd-DEBUG: CdMappingDb: clearing timestamp device1<=>profile2
# Cd-DEBUG: CdMappingDb: get checksum for device1<->profile2
# Cd-DEBUG: CdMappingDb: got sql entry 0
# Cd-DEBUG: CdMappingDb: get profiles for device1
# Cd-DEBUG: CdMappingDb: got sql entry profile1
# Cd-DEBUG: CdMappingDb: got sql entry profile3
# Cd-DEBUG: CdMappingDb: get devices for profile1
# Cd-DEBUG: CdMappingDb: got sql entry device1
ok 4 /colord/mapping-db
# Cd-DEBUG: CdDeviceDb: trying to open database '/tmp/device.db'
# Cd-INFO: Using device database file /tmp/device.db
# Cd-DEBUG: CdDeviceDb: creating table to repair: no such table: devices
# Cd-DEBUG: CdDeviceDb: add device device1
# Cd-DEBUG: CdDeviceDb: add device device2
# Cd-DEBUG: CdDeviceDb: add device device3
# Cd-DEBUG: CdDeviceDb: remove device device1
# Cd-DEBUG: CdDeviceDb: get devices
# Cd-DEBUG: CdDeviceDb: got sql result device2
# Cd-DEBUG: CdDeviceDb: got sql result device3
# Cd-DEBUG: CdDeviceDb: add device property device2 [kind=display]
# Cd-DEBUG: CdDeviceDb: get property xxx for device2
# Cd-DEBUG: CdDeviceDb: get property kind for device2
# Cd-DEBUG: CdDeviceDb: got sql result display
# Cd-DEBUG: CdDeviceDb: get properties for device device2
# Cd-DEBUG: CdDeviceDb: got sql result kind
# Cd-DEBUG: CdDeviceDb: remove device device2
# Cd-DEBUG: CdDeviceDb: remove device device3
# Cd-DEBUG: CdDeviceDb: get devices
# Cd-DEBUG: CdDeviceDb: get property kind for device2
ok 5 /colord/device-db
ok 6 /colord/profile
# Cd-DEBUG: CdProfileDb: trying to open database '/tmp/profile.db'
# Cd-INFO: Using profile database file /tmp/profile.db
stderr:
free(): invalid pointer
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

4/4 colord-test-private OK              6.37s

Summary of Failures:

3/4 cd-self-test        FAIL            0.11s   killed by signal 6 SIGABRT

Ok:                 2
Expected Fail:      0
Fail:               1
Unexpected Pass:    0
Skipped:            1
Timeout:            0

I have also encountered this test failure, and tried to debug it. The test seems to fail when /tmp/profile.db doesn't exist. So, running it a second time after that has been created allows the test to pass.

Based on my limited knowledge (not being a C programmer), i think this is caused by passing to sqlite3_exec a pointer marked with g_autofree, instead of free'ing it manually with sqlite3_free.

I found another instance in cd-mapping-db.c where sqlite3_exec is passed a pointer marked with g_autofree. However, that SQLite statement doesn't seem to fail when its db file is not found, so this problem isn't triggered there.