Giter Club home page Giter Club logo

Comments (23)

brarcher avatar brarcher commented on July 21, 2024

Thanks for coming up with a minimal example to work from!

I've forked the example and got it building for both Linux and OSX in this branch. What I've found is that the issue does not occur using Check 0.10.0. That is, if Check 0.10.0 was installed before tests were run either using apt (for Linux) or brew (for OSX) the test suite in question will compile and fail in the expected way:

Running suite(s): auto-apt
0%: Checks: 1, Failures: 1, Errors: 0
check_auto_apt.c:8:F:test_execl:test_execl:0: Assertion 'ret_value==0' failed: ret_value==1, 0==0

I attempted to use a locally built version of Check to reproduce the issue. At first I used the latest version of Check. My first attempt did find the "no messaging setup" issue, but only on Linux; OSX does not hit the issue. However, I realized that Check was still being installed prior to building it locally. To remove the possibility that the wrong version was being used, I then attempted to not install Check and only build locally. Using both revision 0.10.0 and the latest master branch, the issue did not occur.

Note though that when building locally I needed to make the following adjustments to the Makefile for the unit tests:

 sed 's/check_pic/check/g' tests/Makefile.am | sed 's/-lrt//g' > tests/Makefile.am.tmp
 mv tests/Makefile.am.tmp tests/Makefile.am

Namely, I used the dynamically built library which was locally built instead of the static library which is available on Ubuntu. This build shows building the latest Check locally, linking using -lcheck, and the test failing in the expected way. This was the .travis.yml configuration script which was used.

I do not know the root issue, as I've not seen the issue locally and cannot poke around in detail. However, I wonder about two things:

  1. The configure script used in the minimal example is using a macro to find Check, and flags are being added manually in the Makefile. The latest version of Check provides an example which uses pkg-config to find Check and the necessary flags. Switching to that configure.ac file and Makefile style may help the example build with the proper flags, if any are missing or some are unnecessary.
  2. Perhaps there is something strange with the static library provided by Ubuntu, and maybe not all of the necessary flags are added to the hand generated Makefile in order to get everything to work correctly.

If you are up for it, could you attempt to update the configure.ac and Makefile.am files to leverage pkg-config more and see if the issue still happens using either a version of Check built locally or the Ubuntu provided static library?

from check.

krichter722 avatar krichter722 commented on July 21, 2024

It's uncommon (in my experience) that the installation from source requires manual adjustment (see https://travis-ci.org/krichter722/check-no_messaging_setup-issue/builds/119692062 without Ubuntu-provided check). Is that an issue (regardless of usage of pkg-config)? Should it be fixed before investigating further?

The

sed 's/check_pic/check/g' tests/Makefile.am | sed 's/-lrt//g' > tests/Makefile.am.tmp
mv tests/Makefile.am.tmp tests/Makefile.am

fix works with 0.10.0-69-g82cdb29 (see https://travis-ci.org/krichter722/check-no_messaging_setup-issue/builds/119725269) (had to add #include <stdint.h> to the test case). Guess this can be considered a user error, but the feedback is still strange and could be improved. What is -lcheck_pic anyway? Thanks for your support.

from check.

brarcher avatar brarcher commented on July 21, 2024

What is -lcheck_pic anyway?

I'm not really sure. It appears this is what Ubuntu choose to name the Check library when it was build statically.

Is that an issue (regardless of usage of pkg-config)? Should it be fixed before investigating further?

It seems to be that the issue is how the linker dependencies are generated. When the static library is used (check_pic) additional dependencies are necessary which were missing from the Makefile. pkg-config should report the necessary flags.

Why the "no messaging" issue can occur is still a mystery to me.

from check.

krichter722 avatar krichter722 commented on July 21, 2024

I still have a lot of trouble with the reproduction of no messaging setup. I can trigger it now outside START_TEST with https://github.com/krichter722/check-no_messaging_setup-issue/commit/2744b0897ce00abb022cc5209ca8077796ccecdf (predecessor works). The symptoms were the same within START_TEST before. I guess one can expect that it doesn't work outside START_TEST, but maybe the feedback could be improved, so that one might say the issue isn't reproducible. Besides improving feedback it'd be good to extract one or two test cases as well.

I'm not very good with autotools and couldn't figure out a bunch of compilation errors which made me add a lot of extranous files to the (no longer) minimal example.

from check.

9fcc avatar 9fcc commented on July 21, 2024

I've had such an issue, too. It comes from build (execute) folder permissions. I didn't had rights to create files while running tests. And I've figured out what is wrong not so fast...

I've quickly checked the code and open_tmp_file is just returns NULL if it could not create the file. I think this is the case. Moreover, it tries to create file in current directory (.) in my system. If it is a temporary file I think it should be created in the /tmp folder.

from check.

brarcher avatar brarcher commented on July 21, 2024

I think that the open_tmp_file() function attempts to open a temporary file in one of several different places. If the system does not have mkstemp() defined (e.g. Windows) then tempnam() is used. This results in the following heuristic for determining where to put the temporary file:

  1. If the TMPDIR environment variable is defined, use that directory
  2. If the TEMP environment variable is defined, use that directory
  3. Use the platform defined temporary directory

For system with mkstemp() defined (e.g. Linux) the following heuristic is used:

  1. If the TEMP environment variable is defined, use that directory
  2. Use the current directory

This could be updated to better map with what Windows would do. Namely, check if TMPDIR is defined first, then fallback to TEMP, then use the current directory.

from check.

brarcher avatar brarcher commented on July 21, 2024

@krichter722, could you see if the change in the following merge request resolves the issue you are seeing?

#81

from check.

9fcc avatar 9fcc commented on July 21, 2024

I've checked on my system, TMPDIR is not set. But P_tmpdir macro returns /tmp folder. And in case if this macro doesn't exist on linux systems, /tmp could be used because it is a temporary directory from FHS.

from check.

brarcher avatar brarcher commented on July 21, 2024

I'll add a check for P_tmpdir as well. That should cover all the bases.

from check.

brarcher avatar brarcher commented on July 21, 2024

A fix for the permission issue has been merged. Kindly re-test to determine if it resolves the issue.

from check.

brarcher avatar brarcher commented on July 21, 2024

Due to no response after a fix has been submitted, I'll close this issue. If the issue is not resolved in the master branch, let me know.

from check.

Earnestly avatar Earnestly commented on July 21, 2024

Hi, I appear to be getting a similar error when attempting to build the
libinput project.

When asked to view the tests/test-suite.log file I find the "No messaging setup" message which appears to be causing the tests to fail:

=========================================
   libinput 1.7.0: test/test-suite.log
=========================================

# TOTAL: 3
# PASS:  2
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: libinput-test-suite-runner
================================

check_msg.c:80: No messaging setup
FAIL libinput-test-suite-runner (exit status: 2)

from check.

brarcher avatar brarcher commented on July 21, 2024

from check.

Earnestly avatar Earnestly commented on July 21, 2024

Ah, when I submit bug reports I try to make sure I'm using the latest code, in this case the check I'm using is from 24e3067.

If the committed code you're refering to is elsewhere I can try that too, but from the master branch this issue still seems present.

Nevertheless I've tried setting TEMP to a location that is definately readable and writable (PWD/t, 0755 and owned by my user) but still see the same failure:

=========================================
   libinput 1.7.0: test/test-suite.log
=========================================

# TOTAL: 3
# PASS:  2
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: libinput-test-suite-runner
================================

check_msg.c:80: No messaging setup
FAIL libinput-test-suite-runner (exit status: 2)

from check.

Earnestly avatar Earnestly commented on July 21, 2024

Just to update that the issue is still present on ce7da2b

from check.

brarcher avatar brarcher commented on July 21, 2024

You should be running with the change I was referring to then. The change is here, which setups a file on the file system for passing data between the process which is running a single test and the parent process which is waiting for the result.

If this is a permission issue, I've a change here which will stop the tests when the tmp file creation fails, instead of slightly later on. If the tests on that change pass, it may be worth giving it a shot to see if that condition is it. If it is hit, then the algorithm for determine a tmp directory is finding a directory where a file cannot be created. This algorithm is:

  1) If the TEMP environment variable is defined, use that directory.
  2) If the P_tmpdir macro is defined, use that directory.
  3) If the TMPDIR environment variable is defined, use that directory.
  4) Use the platform defined temporary directory (if Windows), or the current directory.

It may also be interesting to strace a test, to see where it is trying to create a tmp file and why it is failing. For example, on my system running tests successfully produces the following trace:

...
stat64("/var/tmp/\0", 0x7FFF5EE025B0, 0x1FC8)		 = 0 0
open_nocancel("/var/tmp//check_Ar4Cg4\0", 0xA02, 0x180)		 = 5 0
fcntl_nocancel(0x5, 0x3, 0x0)		 = 2 0
unlink("/var/tmp//check_Ar4Cg4\0", 0x3, 0x0)		 = 0 0
fork()		 = 66030 0
...

That is, a tmp file is created for storing a test result, then fork() is called to create a child process to run the test.

from check.

Earnestly avatar Earnestly commented on July 21, 2024

I've gone and attempted to get some strace messages and something even stranger appears to be happening:

08:50:41.322291 mkdir("/run/udev/rules.d", 0755) = -1 EACCES (Permission denied)

Here is the full strace:

% strace -tt -o s1.strace ./libinput-test-suite-runner
check_msg.c:80: No messaging setup
08:52:54.804179 execve("./libinput-test-suite-runner", ["./libinput-test-suite-runner"], [/* 65 vars */]) = 0
08:52:54.805376 brk(NULL)               = 0x1bcf000
08:52:54.805655 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
08:52:54.805825 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/tls/x86_64/libunwind.so.8", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.805947 stat("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/tls/x86_64", 0x7ffd1395aa70) = -1 ENOENT (No such file or directory)
08:52:54.806057 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/tls/libunwind.so.8", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.806151 stat("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/tls", 0x7ffd1395aa70) = -1 ENOENT (No such file or directory)
08:52:54.806242 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/x86_64/libunwind.so.8", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.806334 stat("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/x86_64", 0x7ffd1395aa70) = -1 ENOENT (No such file or directory)
08:52:54.806425 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libunwind.so.8", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.806518 stat("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs", {st_mode=S_IFDIR|0755, st_size=1270, ...}) = 0
08:52:54.806623 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
08:52:54.806719 fstat(3, {st_mode=S_IFREG|0644, st_size=213737, ...}) = 0
08:52:54.806806 mmap(NULL, 213737, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd42ab46000
08:52:54.806961 close(3)                = 0
08:52:54.807074 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd42ab44000
08:52:54.807168 open("/usr/lib/libunwind.so.8", O_RDONLY|O_CLOEXEC) = 3
08:52:54.807268 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\30\0\0\0\0\0\0"..., 832) = 832
08:52:54.807359 fstat(3, {st_mode=S_IFREG|0755, st_size=47288, ...}) = 0
08:52:54.807451 mmap(NULL, 2203336, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd42a73f000
08:52:54.807544 mprotect(0x7fd42a74a000, 2093056, PROT_NONE) = 0
08:52:54.807644 mmap(0x7fd42a949000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x7fd42a949000
08:52:54.807767 mmap(0x7fd42a94b000, 57032, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd42a94b000
08:52:54.807921 close(3)                = 0
08:52:54.808085 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.808296 open("/usr/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
08:52:54.808409 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \16\0\0\0\0\0\0"..., 832) = 832
08:52:54.808500 fstat(3, {st_mode=S_IFREG|0755, st_size=14456, ...}) = 0
08:52:54.808598 mmap(NULL, 2109584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd42a53b000
08:52:54.808680 mprotect(0x7fd42a53e000, 2093056, PROT_NONE) = 0
08:52:54.808782 mmap(0x7fd42a73d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fd42a73d000
08:52:54.808918 close(3)                = 0
08:52:54.809032 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libcheck.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.809146 open("/usr/lib/libcheck.so.0", O_RDONLY|O_CLOEXEC) = 3
08:52:54.809233 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\36\0\0\0\0\0\0"..., 832) = 832
08:52:54.809311 fstat(3, {st_mode=S_IFREG|0755, st_size=38808, ...}) = 0
08:52:54.809388 mmap(NULL, 2135400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd42a331000
08:52:54.809464 mprotect(0x7fd42a33a000, 2093056, PROT_NONE) = 0
08:52:54.809540 mmap(0x7fd42a539000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7fd42a539000
08:52:54.809651 close(3)                = 0
08:52:54.809763 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libinput.so.10", O_RDONLY|O_CLOEXEC) = 3
08:52:54.809879 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\215\0\0\0\0\0\0"..., 832) = 832
08:52:54.809957 fstat(3, {st_mode=S_IFREG|0755, st_size=867984, ...}) = 0
08:52:54.810041 mmap(NULL, 2386808, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd42a0ea000
08:52:54.810118 mprotect(0x7fd42a12f000, 2097152, PROT_NONE) = 0
08:52:54.810198 mmap(0x7fd42a32f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x45000) = 0x7fd42a32f000
08:52:54.810383 close(3)                = 0
08:52:54.810522 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libmtdev.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.810698 open("/usr/lib/libmtdev.so.1", O_RDONLY|O_CLOEXEC) = 3
08:52:54.810785 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\17\0\0\0\0\0\0"..., 832) = 832
08:52:54.810875 fstat(3, {st_mode=S_IFREG|0755, st_size=22640, ...}) = 0
08:52:54.810959 mmap(NULL, 2117888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd429ee4000
08:52:54.811045 mprotect(0x7fd429ee9000, 2093056, PROT_NONE) = 0
08:52:54.811122 mmap(0x7fd42a0e8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x7fd42a0e8000
08:52:54.811234 close(3)                = 0
08:52:54.811345 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libudev.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.811450 open("/usr/lib/libudev.so.1", O_RDONLY|O_CLOEXEC) = 3
08:52:54.811535 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
08:52:54.811612 fstat(3, {st_mode=S_IFREG|0755, st_size=135408, ...}) = 0
08:52:54.811688 mmap(NULL, 139264, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd42ab22000
08:52:54.811765 mprotect(0x7fd42ab41000, 4096, PROT_NONE) = 0
08:52:54.811841 mmap(0x7fd42ab42000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1f000) = 0x7fd42ab42000
08:52:54.811950 close(3)                = 0
08:52:54.812059 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libevdev.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.812163 open("/usr/lib/libevdev.so.2", O_RDONLY|O_CLOEXEC) = 3
08:52:54.812247 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\245\0\0\0\0\0\0"..., 832) = 832
08:52:54.812322 fstat(3, {st_mode=S_IFREG|0755, st_size=104464, ...}) = 0
08:52:54.812396 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd42ab20000
08:52:54.812478 mmap(NULL, 2199624, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd429cca000
08:52:54.812552 mprotect(0x7fd429cde000, 2093056, PROT_NONE) = 0
08:52:54.812626 mmap(0x7fd429edd000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x7fd429edd000
08:52:54.812733 close(3)                = 0
08:52:54.812849 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libwacom.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.812959 open("/usr/lib/libwacom.so.2", O_RDONLY|O_CLOEXEC) = 3
08:52:54.813043 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\3402\0\0\0\0\0\0"..., 832) = 832
08:52:54.813119 fstat(3, {st_mode=S_IFREG|0755, st_size=40048, ...}) = 0
08:52:54.813195 mmap(NULL, 2135224, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd429ac0000
08:52:54.813269 mprotect(0x7fd429ac9000, 2093056, PROT_NONE) = 0
08:52:54.813344 mmap(0x7fd429cc8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7fd429cc8000
08:52:54.813452 close(3)                = 0
08:52:54.813613 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/librt.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.813710 open("/usr/lib/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
08:52:54.813795 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\37\0\0\0\0\0\0"..., 832) = 832
08:52:54.813877 fstat(3, {st_mode=S_IFREG|0755, st_size=31224, ...}) = 0
08:52:54.813956 mmap(NULL, 2128408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd4298b8000
08:52:54.814034 mprotect(0x7fd4298bf000, 2093056, PROT_NONE) = 0
08:52:54.814110 mmap(0x7fd429abe000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7fd429abe000
08:52:54.814219 close(3)                = 0
08:52:54.814333 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libm.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.814437 open("/usr/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
08:52:54.814520 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300^\0\0\0\0\0\0"..., 832) = 832
08:52:54.814596 fstat(3, {st_mode=S_IFREG|0755, st_size=1124664, ...}) = 0
08:52:54.814679 mmap(NULL, 3219616, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd4295a5000
08:52:54.814757 mprotect(0x7fd4296b7000, 2093056, PROT_NONE) = 0
08:52:54.814860 mmap(0x7fd4298b6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x111000) = 0x7fd4298b6000
08:52:54.814996 close(3)                = 0
08:52:54.815110 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.815219 open("/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
08:52:54.815304 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\6\2\0\0\0\0\0"..., 832) = 832
08:52:54.815379 fstat(3, {st_mode=S_IFREG|0755, st_size=1977568, ...}) = 0
08:52:54.815455 mmap(NULL, 3815728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd429201000
08:52:54.815531 mprotect(0x7fd42939c000, 2093056, PROT_NONE) = 0
08:52:54.815643 mmap(0x7fd42959b000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19a000) = 0x7fd42959b000
08:52:54.815759 mmap(0x7fd4295a1000, 14640, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd4295a1000
08:52:54.815863 close(3)                = 0
08:52:54.815988 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.816099 open("/usr/lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
08:52:54.816181 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220*\0\0\0\0\0\0"..., 832) = 832
08:52:54.816257 fstat(3, {st_mode=S_IFREG|0644, st_size=725536, ...}) = 0
08:52:54.816333 mmap(NULL, 2188336, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd428fea000
08:52:54.816409 mprotect(0x7fd429000000, 2093056, PROT_NONE) = 0
08:52:54.816483 mmap(0x7fd4291ff000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7fd4291ff000
08:52:54.816595 close(3)                = 0
08:52:54.816710 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/liblzma.so.5", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.816818 open("/usr/lib/liblzma.so.5", O_RDONLY|O_CLOEXEC) = 3
08:52:54.816940 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0002\0\0\0\0\0\0"..., 832) = 832
08:52:54.817023 fstat(3, {st_mode=S_IFREG|0755, st_size=154344, ...}) = 0
08:52:54.817100 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd42ab1e000
08:52:54.817184 mmap(NULL, 2249360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd428dc4000
08:52:54.817260 mprotect(0x7fd428de9000, 2093056, PROT_NONE) = 0
08:52:54.817359 mmap(0x7fd428fe8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x24000) = 0x7fd428fe8000
08:52:54.817466 close(3)                = 0
08:52:54.817587 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.817718 open("/usr/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
08:52:54.817823 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200_\0\0\0\0\0\0"..., 832) = 832
08:52:54.817909 fstat(3, {st_mode=S_IFREG|0755, st_size=146824, ...}) = 0
08:52:54.817987 mmap(NULL, 2216432, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd428ba6000
08:52:54.818083 mprotect(0x7fd428bbf000, 2093056, PROT_NONE) = 0
08:52:54.818180 mmap(0x7fd428dbe000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x7fd428dbe000
08:52:54.818290 mmap(0x7fd428dc0000, 12784, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd428dc0000
08:52:54.818417 close(3)                = 0
08:52:54.818541 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libresolv.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.818660 open("/usr/lib/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
08:52:54.818764 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2005\0\0\0\0\0\0"..., 832) = 832
08:52:54.818839 fstat(3, {st_mode=S_IFREG|0755, st_size=80224, ...}) = 0
08:52:54.818921 mmap(NULL, 2185408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd428990000
08:52:54.819017 mprotect(0x7fd4289a3000, 2093056, PROT_NONE) = 0
08:52:54.819115 mmap(0x7fd428ba2000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12000) = 0x7fd428ba2000
08:52:54.819224 mmap(0x7fd428ba4000, 6336, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd428ba4000
08:52:54.819333 close(3)                = 0
08:52:54.819425 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libcap.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.819488 open("/usr/lib/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3
08:52:54.819519 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\25\0\0\0\0\0\0"..., 832) = 832
08:52:54.819546 fstat(3, {st_mode=S_IFREG|0644, st_size=17256, ...}) = 0
08:52:54.819573 mmap(NULL, 2112504, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd42878c000
08:52:54.819601 mprotect(0x7fd428790000, 2093056, PROT_NONE) = 0
08:52:54.819628 mmap(0x7fd42898f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fd42898f000
08:52:54.819660 close(3)                = 0
08:52:54.819691 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libgudev-1.0.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.819724 open("/usr/lib/libgudev-1.0.so.0", O_RDONLY|O_CLOEXEC) = 3
08:52:54.819754 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@:\0\0\0\0\0\0"..., 832) = 832
08:52:54.819781 fstat(3, {st_mode=S_IFREG|0755, st_size=39856, ...}) = 0
08:52:54.819808 mmap(NULL, 2135040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd428582000
08:52:54.819835 mprotect(0x7fd42858b000, 2093056, PROT_NONE) = 0
08:52:54.819862 mmap(0x7fd42878a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7fd42878a000
08:52:54.819917 close(3)                = 0
08:52:54.819983 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libgobject-2.0.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.820016 open("/usr/lib/libgobject-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3
08:52:54.820047 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\256\0\0\0\0\0\0"..., 832) = 832
08:52:54.820074 fstat(3, {st_mode=S_IFREG|0755, st_size=334872, ...}) = 0
08:52:54.820102 mmap(NULL, 2432744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd428330000
08:52:54.820128 mprotect(0x7fd428381000, 2093056, PROT_NONE) = 0
08:52:54.820155 mmap(0x7fd428580000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x50000) = 0x7fd428580000
08:52:54.820189 close(3)                = 0
08:52:54.820234 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libglib-2.0.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.820269 open("/usr/lib/libglib-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3
08:52:54.820300 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\255\1\0\0\0\0\0"..., 832) = 832
08:52:54.820327 fstat(3, {st_mode=S_IFREG|0755, st_size=1127488, ...}) = 0
08:52:54.820358 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd42ab1c000
08:52:54.820388 mmap(NULL, 3225320, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd42801c000
08:52:54.820415 mprotect(0x7fd42812d000, 2097152, PROT_NONE) = 0
08:52:54.820442 mmap(0x7fd42832d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x111000) = 0x7fd42832d000
08:52:54.820474 mmap(0x7fd42832f000, 1768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd42832f000
08:52:54.820506 close(3)                = 0
08:52:54.820575 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libgio-2.0.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.820654 open("/usr/lib/libgio-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3
08:52:54.820684 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360n\3\0\0\0\0\0"..., 832) = 832
08:52:54.820711 fstat(3, {st_mode=S_IFREG|0755, st_size=1652712, ...}) = 0
08:52:54.820738 mmap(NULL, 3755192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd427c87000
08:52:54.820765 mprotect(0x7fd427e13000, 2097152, PROT_NONE) = 0
08:52:54.820792 mmap(0x7fd428013000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18c000) = 0x7fd428013000
08:52:54.820824 mmap(0x7fd42801a000, 7352, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd42801a000
08:52:54.820858 close(3)                = 0
08:52:54.820920 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libffi.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.820996 open("/usr/lib/libffi.so.6", O_RDONLY|O_CLOEXEC) = 3
08:52:54.821026 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\32\0\0\0\0\0\0"..., 832) = 832
08:52:54.821054 fstat(3, {st_mode=S_IFREG|0755, st_size=35280, ...}) = 0
08:52:54.821084 mmap(NULL, 2131560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd427a7e000
08:52:54.821113 mprotect(0x7fd427a85000, 2097152, PROT_NONE) = 0
08:52:54.821141 mmap(0x7fd427c85000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fd427c85000
08:52:54.821175 close(3)                = 0
08:52:54.821222 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libpcre.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.821317 open("/usr/lib/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3
08:52:54.821356 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\27\0\0\0\0\0\0"..., 832) = 832
08:52:54.821383 fstat(3, {st_mode=S_IFREG|0755, st_size=469288, ...}) = 0
08:52:54.821411 mmap(NULL, 2564584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd42780b000
08:52:54.821438 mprotect(0x7fd42787d000, 2093056, PROT_NONE) = 0
08:52:54.821465 mmap(0x7fd427a7c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x71000) = 0x7fd427a7c000
08:52:54.821499 close(3)                = 0
08:52:54.821548 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libgmodule-2.0.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.821651 open("/usr/lib/libgmodule-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3
08:52:54.821698 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\21\0\0\0\0\0\0"..., 832) = 832
08:52:54.821725 fstat(3, {st_mode=S_IFREG|0755, st_size=14624, ...}) = 0
08:52:54.821781 mmap(NULL, 2109848, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd427607000
08:52:54.821808 mprotect(0x7fd42760a000, 2093056, PROT_NONE) = 0
08:52:54.821835 mmap(0x7fd427809000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fd427809000
08:52:54.821883 close(3)                = 0
08:52:54.821945 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.821977 open("/usr/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
08:52:54.822007 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360$\0\0\0\0\0\0"..., 832) = 832
08:52:54.822037 fstat(3, {st_mode=S_IFREG|0755, st_size=92640, ...}) = 0
08:52:54.822065 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd42ab1a000
08:52:54.822103 mmap(NULL, 2187656, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd4273f0000
08:52:54.822146 mprotect(0x7fd427406000, 2093056, PROT_NONE) = 0
08:52:54.822199 mmap(0x7fd427605000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7fd427605000
08:52:54.822248 close(3)                = 0
08:52:54.822321 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libmount.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.822384 open("/usr/lib/libmount.so.1", O_RDONLY|O_CLOEXEC) = 3
08:52:54.822415 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\275\0\0\0\0\0\0"..., 832) = 832
08:52:54.822442 fstat(3, {st_mode=S_IFREG|0755, st_size=313144, ...}) = 0
08:52:54.822469 mmap(NULL, 2412992, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd4271a2000
08:52:54.822496 mprotect(0x7fd4271ec000, 2097152, PROT_NONE) = 0
08:52:54.822524 mmap(0x7fd4273ec000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4a000) = 0x7fd4273ec000
08:52:54.822556 mmap(0x7fd4273ee000, 4544, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd4273ee000
08:52:54.822588 close(3)                = 0
08:52:54.822644 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libblkid.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.822715 open("/usr/lib/libblkid.so.1", O_RDONLY|O_CLOEXEC) = 3
08:52:54.822745 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\221\0\0\0\0\0\0"..., 832) = 832
08:52:54.822772 fstat(3, {st_mode=S_IFREG|0755, st_size=283576, ...}) = 0
08:52:54.822801 mmap(NULL, 2383424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd426f5c000
08:52:54.822830 mprotect(0x7fd426f9d000, 2093056, PROT_NONE) = 0
08:52:54.822858 mmap(0x7fd42719c000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x40000) = 0x7fd42719c000
08:52:54.822891 mmap(0x7fd4271a1000, 3648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd4271a1000
08:52:54.822923 close(3)                = 0
08:52:54.822968 open("/home/earnest/build/pkgbuilds/libinput-git/src/libinput/src/.libs/libuuid.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
08:52:54.823061 open("/usr/lib/libuuid.so.1", O_RDONLY|O_CLOEXEC) = 3
08:52:54.823092 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\25\0\0\0\0\0\0"..., 832) = 832
08:52:54.823119 fstat(3, {st_mode=S_IFREG|0755, st_size=19080, ...}) = 0
08:52:54.823155 mmap(NULL, 2113936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd426d57000
08:52:54.823261 mprotect(0x7fd426d5b000, 2093056, PROT_NONE) = 0
08:52:54.823313 mmap(0x7fd426f5a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fd426f5a000
08:52:54.823358 close(3)                = 0
08:52:54.823438 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd42ab18000
08:52:54.823569 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd42ab16000
08:52:54.823643 arch_prctl(ARCH_SET_FS, 0x7fd42ab16c00) = 0
08:52:54.823739 mprotect(0x7fd42959b000, 16384, PROT_READ) = 0
08:52:54.823782 mprotect(0x7fd426f5a000, 4096, PROT_READ) = 0
08:52:54.823830 mprotect(0x7fd42719c000, 16384, PROT_READ) = 0
08:52:54.823914 mprotect(0x7fd428dbe000, 4096, PROT_READ) = 0
08:52:54.823980 mprotect(0x7fd429abe000, 4096, PROT_READ) = 0
08:52:54.824066 mprotect(0x7fd4273ec000, 4096, PROT_READ) = 0
08:52:54.824177 mprotect(0x7fd427605000, 4096, PROT_READ) = 0
08:52:54.824324 mprotect(0x7fd42a73d000, 4096, PROT_READ) = 0
08:52:54.824427 mprotect(0x7fd427a7c000, 4096, PROT_READ) = 0
08:52:54.824543 mprotect(0x7fd42832d000, 4096, PROT_READ) = 0
08:52:54.824628 mprotect(0x7fd427809000, 4096, PROT_READ) = 0
08:52:54.824707 mprotect(0x7fd427c85000, 4096, PROT_READ) = 0
08:52:54.824853 mprotect(0x7fd428ba2000, 4096, PROT_READ) = 0
08:52:54.825012 mprotect(0x7fd428580000, 4096, PROT_READ) = 0
08:52:54.825179 mprotect(0x7fd428013000, 20480, PROT_READ) = 0
08:52:54.825313 mprotect(0x7fd4298b6000, 4096, PROT_READ) = 0
08:52:54.825491 mprotect(0x7fd42ab42000, 4096, PROT_READ) = 0
08:52:54.825584 mprotect(0x7fd42878a000, 4096, PROT_READ) = 0
08:52:54.825659 mprotect(0x7fd428fe8000, 4096, PROT_READ) = 0
08:52:54.825738 mprotect(0x7fd4291ff000, 4096, PROT_READ) = 0
08:52:54.825820 mprotect(0x7fd429cc8000, 4096, PROT_READ) = 0
08:52:54.825960 mprotect(0x7fd429edd000, 24576, PROT_READ) = 0
08:52:54.826046 mprotect(0x7fd42a0e8000, 4096, PROT_READ) = 0
08:52:54.826123 mprotect(0x7fd42a32f000, 4096, PROT_READ) = 0
08:52:54.826259 mprotect(0x7fd42a539000, 4096, PROT_READ) = 0
08:52:54.826343 mprotect(0x7fd42a949000, 4096, PROT_READ) = 0
08:52:54.826428 mprotect(0x6a2000, 4096, PROT_READ) = 0
08:52:54.826522 mprotect(0x7fd42ab7b000, 4096, PROT_READ) = 0
08:52:54.826592 munmap(0x7fd42ab46000, 213737) = 0
08:52:54.826695 set_tid_address(0x7fd42ab16ed0) = 25133
08:52:54.826754 set_robust_list(0x7fd42ab16ee0, 24) = 0
08:52:54.826824 rt_sigaction(SIGRTMIN, {sa_handler=0x7fd428baba00, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7fd428bb7fe0}, NULL, 8) = 0
08:52:54.826954 rt_sigaction(SIGRT_1, {sa_handler=0x7fd428baba90, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7fd428bb7fe0}, NULL, 8) = 0
08:52:54.827043 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
08:52:54.827120 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
08:52:54.827320 brk(NULL)               = 0x1bcf000
08:52:54.827392 brk(0x1bf0000)          = 0x1bf0000
08:52:54.827683 futex(0x7fd42832f4a8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
08:52:54.827780 futex(0x7fd42832f4a8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
08:52:54.827979 clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fd42ab16ed0) = 25134
08:52:54.828303 wait4(25134, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0, NULL) = 25134
08:52:54.828737 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=25134, si_uid=1000, si_status=1, si_utime=0, si_stime=0} ---
08:52:54.829220 brk(0x1c11000)          = 0x1c11000
08:52:54.829959 brk(0x1c32000)          = 0x1c32000
08:52:54.830508 brk(0x1c53000)          = 0x1c53000
08:52:54.830809 brk(0x1c74000)          = 0x1c74000
08:52:54.831383 brk(0x1c95000)          = 0x1c95000
08:52:54.832120 brk(0x1cb6000)          = 0x1cb6000
08:52:54.832879 brk(0x1cd7000)          = 0x1cd7000
08:52:54.833643 brk(0x1cf8000)          = 0x1cf8000
08:52:54.834366 brk(0x1d19000)          = 0x1d19000
08:52:54.835110 brk(0x1d3a000)          = 0x1d3a000
08:52:54.835787 brk(0x1d5b000)          = 0x1d5b000
08:52:54.836244 brk(0x1d7c000)          = 0x1d7c000
08:52:54.836528 prlimit64(0, RLIMIT_CORE, {rlim_cur=0, rlim_max=0}, NULL) = 0
08:52:54.836620 mkdir("/run/udev/rules.d", 0755) = -1 EACCES (Permission denied)
08:52:54.836753 write(2, "check_msg.c:80: ", 16) = 16
08:52:54.836840 write(2, "No messaging setup", 18) = 18
08:52:54.836993 write(2, "\n", 1)       = 1
08:52:54.837328 exit_group(2)           = ?
08:52:54.837962 +++ exited with 2 +++

from check.

brarcher avatar brarcher commented on July 21, 2024

Does this mean that Check is determining that /run/udev/rules.d is a suitable tmp directory? But, the call that Check should be making, mkstemp, will not create a directory and will fail if the directory does not exist. There is no explicit mkdir in Check, so I am curious as to what is making the call and why.

Do you know the environment of the unit test? Namely, do you know if TEMP are defined and what they are, and what PWD is?

Can you point me to what revision of libinput this is occurring on? May I can try to reproduce it myself.

from check.

9fcc avatar 9fcc commented on July 21, 2024

@Earnestly As I see you test libinput? So may it be that some function that being tested is trying to create directory in "/run/udev/rules.d" without root permissions (and so it fails)?

from check.

Earnestly avatar Earnestly commented on July 21, 2024

@9fcc Yes, that is what's happening and why it ultimately fails. The code appears to print a useful error message but it is never seen.

I think the issue now is how check handles these cases as the current message isn't very helpful.

from check.

brarcher avatar brarcher commented on July 21, 2024

OK, I think I understand the issue now. It is a question of API usage, I believe.

The Check assertion calls are valid when a test or a setup/teardown function is being run. Outside of these times the behavior of the assertions is undefined. Looking at the source for libinput 1.7.2 I see the following:

static inline int
litest_run(int argc, char **argv)
...
        litest_init_udev_rules(&created_files_list);

        litest_setup_sighandler(SIGINT);

        if (jobs == 1)
                failed = litest_run_suite(argv[0], &all_tests, 1, 1);
        else
                failed = litest_fork_subtests(argv[0], &all_tests, jobs);

where srunner_run(), which runs the tests with Check, is invoked in litest_run_suite() or litest_fork_subtests(). However, litest_init_udev_rules() contains the following:

        rc = mkdir(UDEV_RULES_D, 0755);
        if (rc == -1 && errno != EEXIST)
                ck_abort_msg("Failed to create udev rules directory (%s)\n",
                             strerror(errno));

        rc = mkdir(UDEV_HWDB_D, 0755);
        if (rc == -1 && errno != EEXIST)
                ck_abort_msg("Failed to create udev hwdb directory (%s)\n",
                             strerror(errno));

Note the ck_abort_msg calls. As the litest_init_udev_rules() function is not being executed within the context of Check, the call behavior is not defined. When they are called outside of running tests in Check they attempt to communicate to the process which started the test (of which there is none).

Given this, the message which is reported from Check, namely No messaging setup can be updated to be more clear. I'll change it to ask if the assertion was called while running a test.

from check.

brarcher avatar brarcher commented on July 21, 2024

Refer to the following for the updated error message: #123

from check.

Earnestly avatar Earnestly commented on July 21, 2024

Ah thank you very much for looking into this. I wasn't clear at all, but indeed it seems to have become an API usage question when we realised it not displaying the expected diagnostic messages as you explained.

The proposed PR #123 provides a better message which should help directing maintainers or developers to the source of the problem.

from check.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.