View Issue Details

IDProjectCategoryView StatusLast Update
0009709Talerexchangepublic2025-04-14 15:07
Reporterreynir Assigned ToChristian Grothoff  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version0.14 
Target Version1.0Fixed in Version1.0 
Summary0009709: Configs in /usr/share/taler-exchange/config.d/ does not seem to be loaded
DescriptionAccording to this section configuration files in /usr/share/taler-exchange/config.d/ are loaded as default values: https://docs.taler.net/taler-exchange-manual.html#configuration-fundamentals

However, when I run taler-exchange.target I get errors that {AGGREGATOR,CLOSER,TRANSFER,WIREWATCH}_IDLE_SLEEP_INTERVAL are not defined. However, I can confirm they are defined in /usr/share/taler-exchange/config.d/exchange.conf.

I also had to define KEY_DIR for the taler-exchange-secmod-* sections even if it is defined as KEY_DIR = ${TALER_DATA_HOME}secmod-cs/keys in the default secmod.conf files.
Additional InformationThe output of taler-exchange-config --diagnostics does not include the *_IDLE_SLEEP_INTERVAL variables. The header of the output is:

#
# Configuration file diagnostics
#
# Entry point: /etc/taler-exchange/taler-exchange.conf
#
# Files Loaded:
# /etc/taler-exchange/taler-exchange.conf
# + /etc/taler-exchange/conf.d/exchange-business.conf
# ++ /etc/taler-exchange/conf.d/../secrets/exchange-accountcredentials-1.secret.conf (loaded secret section exchange-accountcredentials-1)
# + /etc/taler-exchange/conf.d/exchange-coins.conf
# + /etc/taler-exchange/conf.d/exchange-secmod.conf
# + /etc/taler-exchange/conf.d/exchange-system.conf
# ++ /etc/taler-exchange/conf.d/../secrets/exchange-db.secret.conf (loaded secret section exchangedb-postgres)
# + /etc/taler-exchange/overrides.conf
#
# Installation paths:
# IPK_DATADIR = /usr/share/taler-exchange/
# IPK_LIBDIR = /usr/lib/x86_64-linux-gnu/taler-exchange/
# IPK_BINDIR = /usr/bin/
# IPK_LOCALEDIR = /usr/
# IPK_LOCALEDIR = /usr/share/locale/
# IPK_DOCDIR = /usr/share/icons/
# IPK_DOCDIR = /usr/share/doc/taler-exchange/
# IPK_LIBEXECDIR = /usr/taler-exchange/libexec/
# IPK_SELF_PREFIX = /usr/
#
TagsNo tags attached.

Activities

Christian Grothoff

2025-04-08 13:37

manager   ~0024442

Which version is this? Specifically,

taler-exchange-config -v and
gnunet-config -v

might be helpful. I just tried on my system, there it of course works...

reynir

2025-04-08 15:32

reporter   ~0024443

# taler-exchange-config -v
taler-exchange-config v0.14.5-git-2cadb9e
# gnunet-config -v
gnunet-config vdebian-0.23.2_rc.1 git-688e7d6
2025-04-08T15:31:23.936604+0200 gnunet-config-15892 ERROR Unreadable configuration file `(null)', exiting ..

reynir

2025-04-08 17:20

reporter   ~0024444

I used the apt repository mentioned in the manual. Apt reports the versions to be 0.14.5 and 0.23.2~rc.1 respectively.

Christian Grothoff

2025-04-08 19:20

manager   ~0024449

Is this Ubuntu or Debian?

reynir

2025-04-09 09:58

reporter   ~0024459

It is debian 12

Christian Grothoff

2025-04-09 10:51

manager   ~0024466

Can you please try
# apt update
# apt upgrade

I don't see how this would have been broken in the past, but your version is rather old already, and maybe we had something broken briefly.

reynir

2025-04-09 11:40

reporter   ~0024471

I upgraded, but I still get complaints about variables not being defined

$ taler-exchange-config -v
taler-exchange-config v0.14.9-git-fd5b688
$ gnunet-config -v
gnunet-config v0.24.0-debian
2025-04-09T11:39:24.341447+0200 gnunet-config-1502 ERROR Unreadable configuration file `(null)', exiting ...

Christian Grothoff

2025-04-10 13:53

manager   ~0024497

Hmm. I see. That log message is actually telling. Seems like GNUNET_CONFIGURATION_default_filename() returns NULL, which it does if it cannot find a configuration file under any of the default locations. Which could make sense, because you didn't actually install GNUnet, so there are no config files for it to find. So that explains why you get an error there and I do not, as I have the GNUnet config files. Anyway, that's a minor GNUnet issue which I've fixed in d98ca65ca..61e696500. Sadly doesn't explain at all why your taler-exchange-config doesn't find the variables. That said, you did try the original commands after the "apt upgrade", right? And it still doesn't find the defaults?

Next I guess "strace taler-exchange-config --diagnostics" might be useful to see what it does *try* to do. But very, very strange.

reynir

2025-04-14 10:52

reporter   ~0024524

Please see the attached strace (I omitted things in the beginning that are not relevant - loading shared libraries and such). What I observe is it *does* look at /usr/share/taler-exchange/config.d/ and observe that there are 19 entries. But for whatever reason it doesn't ever open the files there.
strace.txt (36,635 bytes)   
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/taler-exchange/libexec/", 0x7fffc2d80760, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/taler-exchange/libexec/", 0x7fffc2d80760, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/home/reynir/.config/taler-exchange.conf", 0x7fffc2d807e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/etc/taler-exchange.conf", 0x7fffc2d807e0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/etc/taler-exchange/taler-exchange.conf", {st_mode=S_IFREG|0644, st_size=1619, ...}, 0) = 0
access("/etc/taler-exchange/taler-exchange.conf", R_OK) = 0
getpid()                                = 1077
newfstatat(AT_FDCWD, "/etc/taler-exchange/taler-exchange.conf", {st_mode=S_IFREG|0644, st_size=1619, ...}, 0) = 0
access("/etc/taler-exchange/taler-exchange.conf", F_OK) = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 3
newfstatat(3, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(3, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(3, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(3, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(3, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(3, "00 fe:01 1312291                "..., 1024) = 1024
read(3, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(3, "00 fe:01 1317916                "..., 1024) = 1024
read(3, "                 /usr/lib/x86_64"..., 1024) = 1024
read(3, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(3, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(3)                                = 0
newfstatat(AT_FDCWD, "/usr/share/taler-exchange/config.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
access("/usr/share/taler-exchange/config.d", R_OK|X_OK) = 0
openat(AT_FDCWD, "/usr/share/taler-exchange/config.d", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
newfstatat(3, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
getdents64(3, 0x5652360e7ef0 /* 19 entries */, 32768) = 832
getdents64(3, 0x5652360e7ef0 /* 0 entries */, 32768) = 0
close(3)                                = 0
openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=2137, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=2137, ...}, AT_EMPTY_PATH) = 0
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\7\0\0\0\0"..., 4096) = 2137
lseek(3, -1359, SEEK_CUR)               = 778
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\10\0\0\0\0"..., 4096) = 1359
close(3)                                = 0
write(2, "2025-04-14T10:44:25.793122+0200 "..., 156) = 156
newfstatat(AT_FDCWD, "/etc/taler-exchange/taler-exchange.conf", {st_mode=S_IFREG|0644, st_size=1619, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/taler-exchange.conf", {st_mode=S_IFREG|0644, st_size=1619, ...}, 0) = 0
access("/etc/taler-exchange/taler-exchange.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/taler-exchange.conf", O_RDONLY|O_CLOEXEC) = 3
read(3, "# Main entry point for the GNU T"..., 1619) = 1619
close(3)                                = 0
readlink("/etc", 0x7fffc2d80240, 1023)  = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange", 0x7fffc2d80240, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/taler-exchange.conf", 0x7fffc2d80240, 1023) = -1 EINVAL (Invalid argument)
openat(AT_FDCWD, "/etc/taler-exchange/conf.d", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
newfstatat(3, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
getdents64(3, 0x5652360f0a50 /* 6 entries */, 32768) = 216
getdents64(3, 0x5652360f0a50 /* 0 entries */, 32768) = 0
close(3)                                = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-business.conf", {st_mode=S_IFREG|0644, st_size=1684, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-business.conf", {st_mode=S_IFREG|0644, st_size=1684, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/exchange-business.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-business.conf", O_RDONLY|O_CLOEXEC) = 3
read(3, "# Configuration for business-lev"..., 1684) = 1684
close(3)                                = 0
readlink("/etc", 0x7fffc2d80040, 1023)  = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange", 0x7fffc2d80040, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/conf.d", 0x7fffc2d80040, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/conf.d/exchange-business.conf", 0x7fffc2d80040, 1023) = -1 EINVAL (Invalid argument)
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/../secrets/exchange-accountcredentials-1.secret.conf", {st_mode=S_IFREG|0640, st_size=540, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/../secrets/exchange-accountcredentials-1.secret.conf", R_OK) = -1 EACCES (Permission denied)
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-coins.conf", {st_mode=S_IFREG|0644, st_size=874, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-coins.conf", {st_mode=S_IFREG|0644, st_size=874, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/exchange-coins.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-coins.conf", O_RDONLY|O_CLOEXEC) = 3
read(3, "#\n# This configuration file spec"..., 874) = 874
close(3)                                = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-secmod.conf", {st_mode=S_IFREG|0644, st_size=219, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-secmod.conf", {st_mode=S_IFREG|0644, st_size=219, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/exchange-secmod.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-secmod.conf", O_RDONLY|O_CLOEXEC) = 3
read(3, "[taler-exchange-secmod-cs]\n\nKEY_"..., 219) = 219
close(3)                                = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-system.conf", {st_mode=S_IFREG|0644, st_size=354, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-system.conf", {st_mode=S_IFREG|0644, st_size=354, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/exchange-system.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-system.conf", O_RDONLY|O_CLOEXEC) = 3
read(3, "# Configuration settings for sys"..., 354) = 354
close(3)                                = 0
readlink("/etc", 0x7fffc2d80040, 1023)  = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange", 0x7fffc2d80040, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/conf.d", 0x7fffc2d80040, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/conf.d/exchange-system.conf", 0x7fffc2d80040, 1023) = -1 EINVAL (Invalid argument)
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/../secrets/exchange-db.secret.conf", {st_mode=S_IFREG|0640, st_size=277, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/../secrets/exchange-db.secret.conf", R_OK) = -1 EACCES (Permission denied)
readlink("/etc", 0x7fffc2d80240, 1023)  = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange", 0x7fffc2d80240, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/taler-exchange.conf", 0x7fffc2d80240, 1023) = -1 EINVAL (Invalid argument)
newfstatat(AT_FDCWD, "/etc/taler-exchange/overrides.conf", {st_mode=S_IFREG|0644, st_size=76, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/overrides.conf", {st_mode=S_IFREG|0644, st_size=76, ...}, 0) = 0
access("/etc/taler-exchange/overrides.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/overrides.conf", O_RDONLY|O_CLOEXEC) = 3
read(3, "# This configuration will be cha"..., 76) = 76
close(3)                                = 0
pipe2([3, 4], O_CLOEXEC)                = 0
fcntl(3, F_GETFL)                       = 0 (flags O_RDONLY)
fcntl(3, F_SETFL, O_RDONLY|O_NONBLOCK)  = 0
fcntl(3, F_GETFD)                       = 0x1 (flags FD_CLOEXEC)
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
fcntl(4, F_GETFL)                       = 0x1 (flags O_WRONLY)
fcntl(4, F_SETFL, O_WRONLY|O_NONBLOCK)  = 0
fcntl(4, F_GETFD)                       = 0x1 (flags FD_CLOEXEC)
fcntl(4, F_SETFD, FD_CLOEXEC)           = 0
getpid()                                = 1077
rt_sigaction(SIGINT, {sa_handler=0x7f4dd6f597c0, sa_mask=[], sa_flags=SA_RESTORER|SA_INTERRUPT, sa_restorer=0x7f4dd6d58050}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGTERM, {sa_handler=0x7f4dd6f597c0, sa_mask=[], sa_flags=SA_RESTORER|SA_INTERRUPT, sa_restorer=0x7f4dd6d58050}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGPIPE, {sa_handler=0x7f4dd6f57cd0, sa_mask=[], sa_flags=SA_RESTORER|SA_INTERRUPT, sa_restorer=0x7f4dd6d58050}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=0x7f4dd6f597c0, sa_mask=[], sa_flags=SA_RESTORER|SA_INTERRUPT, sa_restorer=0x7f4dd6d58050}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGHUP, {sa_handler=0x7f4dd6f597c0, sa_mask=[], sa_flags=SA_RESTORER|SA_INTERRUPT, sa_restorer=0x7f4dd6d58050}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
pselect6(4, [3], [], NULL, {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout)
pselect6(4, [3], [], NULL, {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout)
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/taler-exchange/", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
access("/usr/lib/x86_64-linux-gnu/taler-exchange/", R_OK|X_OK) = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/taler-exchange/libexec/", 0x7fffc2d80650, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/taler-exchange/libexec/", 0x7fffc2d80650, 0) = -1 ENOENT (No such file or directory)
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
newfstatat(AT_FDCWD, "/usr/share/taler-exchange/config.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
access("/usr/share/taler-exchange/config.d", R_OK|X_OK) = 0
openat(AT_FDCWD, "/usr/share/taler-exchange/config.d", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5
newfstatat(5, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
getdents64(5, 0x5652360f0a50 /* 19 entries */, 32768) = 832
getdents64(5, 0x5652360f0a50 /* 0 entries */, 32768) = 0
close(5)                                = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=2137, ...}, 0) = 0
write(2, "2025-04-14T10:44:25.801654+0200 "..., 156) = 156
newfstatat(AT_FDCWD, "/etc/taler-exchange/taler-exchange.conf", {st_mode=S_IFREG|0644, st_size=1619, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/taler-exchange.conf", {st_mode=S_IFREG|0644, st_size=1619, ...}, 0) = 0
access("/etc/taler-exchange/taler-exchange.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/taler-exchange.conf", O_RDONLY|O_CLOEXEC) = 5
read(5, "# Main entry point for the GNU T"..., 1619) = 1619
close(5)                                = 0
readlink("/etc", 0x7fffc2d80130, 1023)  = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange", 0x7fffc2d80130, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/taler-exchange.conf", 0x7fffc2d80130, 1023) = -1 EINVAL (Invalid argument)
openat(AT_FDCWD, "/etc/taler-exchange/conf.d", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5
newfstatat(5, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
getdents64(5, 0x5652360f0a50 /* 6 entries */, 32768) = 216
getdents64(5, 0x5652360f0a50 /* 0 entries */, 32768) = 0
close(5)                                = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-business.conf", {st_mode=S_IFREG|0644, st_size=1684, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-business.conf", {st_mode=S_IFREG|0644, st_size=1684, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/exchange-business.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-business.conf", O_RDONLY|O_CLOEXEC) = 5
read(5, "# Configuration for business-lev"..., 1684) = 1684
close(5)                                = 0
readlink("/etc", 0x7fffc2d7ff30, 1023)  = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange", 0x7fffc2d7ff30, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/conf.d", 0x7fffc2d7ff30, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/conf.d/exchange-business.conf", 0x7fffc2d7ff30, 1023) = -1 EINVAL (Invalid argument)
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/../secrets/exchange-accountcredentials-1.secret.conf", {st_mode=S_IFREG|0640, st_size=540, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/../secrets/exchange-accountcredentials-1.secret.conf", R_OK) = -1 EACCES (Permission denied)
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/../secrets/exchange-accountcredentials-1.secret.conf", {st_mode=S_IFREG|0640, st_size=540, ...}, 0) = 0
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5
connect(5, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(5)                                = 0
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5
connect(5, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(5)                                = 0
newfstatat(AT_FDCWD, "/etc/nsswitch.conf", {st_mode=S_IFREG|0644, st_size=526, ...}, 0) = 0
newfstatat(AT_FDCWD, "/", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
openat(AT_FDCWD, "/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 5
newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=526, ...}, AT_EMPTY_PATH) = 0
read(5, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 526
read(5, "", 4096)                       = 0
newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=526, ...}, AT_EMPTY_PATH) = 0
close(5)                                = 0
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 5
newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=2030, ...}, AT_EMPTY_PATH) = 0
lseek(5, 0, SEEK_SET)                   = 0
read(5, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 2030
close(5)                                = 0
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5
connect(5, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(5)                                = 0
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 5
connect(5, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(5)                                = 0
newfstatat(AT_FDCWD, "/etc/nsswitch.conf", {st_mode=S_IFREG|0644, st_size=526, ...}, 0) = 0
openat(AT_FDCWD, "/etc/group", O_RDONLY|O_CLOEXEC) = 5
newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=1051, ...}, AT_EMPTY_PATH) = 0
lseek(5, 0, SEEK_SET)                   = 0
read(5, "root:x:0:\ndaemon:x:1:\nbin:x:2:\ns"..., 4096) = 1051
close(5)                                = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-coins.conf", {st_mode=S_IFREG|0644, st_size=874, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-coins.conf", {st_mode=S_IFREG|0644, st_size=874, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/exchange-coins.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-coins.conf", O_RDONLY|O_CLOEXEC) = 5
read(5, "#\n# This configuration file spec"..., 874) = 874
close(5)                                = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-secmod.conf", {st_mode=S_IFREG|0644, st_size=219, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-secmod.conf", {st_mode=S_IFREG|0644, st_size=219, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/exchange-secmod.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-secmod.conf", O_RDONLY|O_CLOEXEC) = 5
read(5, "[taler-exchange-secmod-cs]\n\nKEY_"..., 219) = 219
close(5)                                = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-system.conf", {st_mode=S_IFREG|0644, st_size=354, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-system.conf", {st_mode=S_IFREG|0644, st_size=354, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/exchange-system.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/conf.d/exchange-system.conf", O_RDONLY|O_CLOEXEC) = 5
read(5, "# Configuration settings for sys"..., 354) = 354
close(5)                                = 0
readlink("/etc", 0x7fffc2d7ff30, 1023)  = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange", 0x7fffc2d7ff30, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/conf.d", 0x7fffc2d7ff30, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/conf.d/exchange-system.conf", 0x7fffc2d7ff30, 1023) = -1 EINVAL (Invalid argument)
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/../secrets/exchange-db.secret.conf", {st_mode=S_IFREG|0640, st_size=277, ...}, 0) = 0
access("/etc/taler-exchange/conf.d/../secrets/exchange-db.secret.conf", R_OK) = -1 EACCES (Permission denied)
newfstatat(AT_FDCWD, "/etc/taler-exchange/conf.d/../secrets/exchange-db.secret.conf", {st_mode=S_IFREG|0640, st_size=277, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/nsswitch.conf", {st_mode=S_IFREG|0644, st_size=526, ...}, 0) = 0
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 5
newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=2030, ...}, AT_EMPTY_PATH) = 0
lseek(5, 0, SEEK_SET)                   = 0
read(5, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 2030
close(5)                                = 0
newfstatat(AT_FDCWD, "/etc/nsswitch.conf", {st_mode=S_IFREG|0644, st_size=526, ...}, 0) = 0
openat(AT_FDCWD, "/etc/group", O_RDONLY|O_CLOEXEC) = 5
newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=1051, ...}, AT_EMPTY_PATH) = 0
lseek(5, 0, SEEK_SET)                   = 0
read(5, "root:x:0:\ndaemon:x:1:\nbin:x:2:\ns"..., 4096) = 1051
close(5)                                = 0
readlink("/etc", 0x7fffc2d80130, 1023)  = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange", 0x7fffc2d80130, 1023) = -1 EINVAL (Invalid argument)
readlink("/etc/taler-exchange/taler-exchange.conf", 0x7fffc2d80130, 1023) = -1 EINVAL (Invalid argument)
newfstatat(AT_FDCWD, "/etc/taler-exchange/overrides.conf", {st_mode=S_IFREG|0644, st_size=76, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, "/etc/taler-exchange/overrides.conf", {st_mode=S_IFREG|0644, st_size=76, ...}, 0) = 0
access("/etc/taler-exchange/overrides.conf", F_OK) = 0
openat(AT_FDCWD, "/etc/taler-exchange/overrides.conf", O_RDONLY|O_CLOEXEC) = 5
read(5, "# This configuration will be cha"..., 76) = 76
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/taler-exchange/", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
access("/usr/lib/x86_64-linux-gnu/taler-exchange/", R_OK|X_OK) = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
getpid()                                = 1077
openat(AT_FDCWD, "/proc/1077/maps", O_RDONLY) = 5
newfstatat(5, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(5, "565232cb0000-565232cb1000 r--p 0"..., 1024) = 1024
read(5, "000-7f4dd67e2000 r--p 00025000 f"..., 1024) = 1024
read(5, "/libidn2.so.0.3.8\n7f4dd67f1000-7"..., 1024) = 1024
read(5, "p 00000000 fe:01 1312019        "..., 1024) = 1024
read(5, "00 fe:01 1312291                "..., 1024) = 1024
read(5, "b5b000 r--p 001b1000 fe:01 13131"..., 1024) = 1024
read(5, "00 fe:01 1317916                "..., 1024) = 1024
read(5, "                 /usr/lib/x86_64"..., 1024) = 1024
read(5, "f4dd6eea000 r--p 0017b000 fe:01 "..., 1024) = 1024
read(5, " \n7f4dd6f88000-7f4dd6f98000 r--p"..., 1024) = 1024
close(5)                                = 0
newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/taler-exchange/libexec/", 0x7fffc2d805f0, 0) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/taler-exchange/libexec/", 0x7fffc2d805f0, 0) = -1 ENOENT (No such file or directory)
getpid()                                = 1077
readlink("/proc/1077/exe", "/usr/bin/taler-exchange-config", 1023) = 30
newfstatat(1, "", {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0), ...}, AT_EMPTY_PATH) = 0
write(1, "#\n# Configuration file diagnosti"..., 3072) = 3072
write(1, "xchange-system.conf:11\n", 23) = 23
write(1, "DB = postgres\n", 14)         = 14
write(1, "\n", 1)                       = 1
write(1, "# /etc/taler-exchange/conf.d/exc"..., 55) = 55
write(1, "ATTRIBUTE_ENCRYPTION_KEY = SET_M"..., 41) = 41
write(1, "\n", 1)                       = 1
write(1, "# /etc/taler-exchange/conf.d/exc"..., 55) = 55
write(1, "BASE_URL = http://taler-exchange"..., 34) = 34
write(1, "\n", 1)                       = 1
write(1, "# /etc/taler-exchange/conf.d/exc"..., 54) = 54
write(1, "MASTER_PUBLIC_KEY = HH4V4DWTZT7D"..., 73) = 73
write(1, "\n", 1)                       = 1
write(1, "# /etc/taler-exchange/taler-exch"..., 45) = 45
write(1, "currency_round_unit = KUDOS:0.01"..., 33) = 33
write(1, "\n", 1)                       = 1
write(1, "# /etc/taler-exchange/taler-exch"..., 45) = 45
write(1, "currency = KUDOS\n", 17)      = 17
write(1, "\n", 1)                       = 1
write(1, "\n", 1)                       = 1
write(1, "[PATHS]\n", 8)                = 8
write(1, "\n", 1)                       = 1
write(1, "# /etc/taler-exchange/taler-exch"..., 45) = 45
write(1, "TALER_DATA_HOME = /var/lib/taler"..., 43) = 43
write(1, "\n", 1)                       = 1
write(1, "# /etc/taler-exchange/taler-exch"..., 45) = 45
write(1, "TALER_CONFIG_HOME = /etc/taler-e"..., 41) = 41
write(1, "\n", 1)                       = 1
write(1, "# /etc/taler-exchange/taler-exch"..., 45) = 45
write(1, "TALER_CACHE_HOME = /var/cache/ta"..., 46) = 46
write(1, "\n", 1)                       = 1
write(1, "# /etc/taler-exchange/taler-exch"..., 45) = 45
write(1, "TALER_RUNTIME_DIR = /run/taler-e"..., 41) = 41
write(1, "\n", 1)                       = 1
write(1, "# /etc/taler-exchange/taler-exch"..., 45) = 45
write(1, "TALER_HOME = /var/lib/taler-exch"..., 38) = 38
write(1, "\n", 1)                       = 1
write(1, "\n", 1)                       = 1
pselect6(0, 0x5652360e82b8, 0x5652360e8348, NULL, {tv_sec=0, tv_nsec=0}, NULL) = 0 (Timeout)
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f4dd6d58050}, {sa_handler=0x7f4dd6f597c0, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f4dd6d58050}, 8) = 0
rt_sigaction(SIGTERM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f4dd6d58050}, {sa_handler=0x7f4dd6f597c0, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f4dd6d58050}, 8) = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f4dd6d58050}, {sa_handler=0x7f4dd6f57cd0, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f4dd6d58050}, 8) = 0
rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f4dd6d58050}, {sa_handler=0x7f4dd6f597c0, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f4dd6d58050}, 8) = 0
rt_sigaction(SIGHUP, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f4dd6d58050}, {sa_handler=0x7f4dd6f597c0, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f4dd6d58050}, 8) = 0
close(3)                                = 0
close(4)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++
strace.txt (36,635 bytes)   

reynir

2025-04-14 11:00

reporter   ~0024525

For brevity please take a look at this grep output:

$ grep -A5 '/usr/share/taler-exchange/config.d' taler-exchange.strace
newfstatat(AT_FDCWD, "/usr/share/taler-exchange/config.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
access("/usr/share/taler-exchange/config.d", R_OK|X_OK) = 0
openat(AT_FDCWD, "/usr/share/taler-exchange/config.d", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
newfstatat(3, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
getdents64(3, 0x5652360e7ef0 /* 19 entries */, 32768) = 832
getdents64(3, 0x5652360e7ef0 /* 0 entries */, 32768) = 0
close(3) = 0
openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
--
newfstatat(AT_FDCWD, "/usr/share/taler-exchange/config.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
access("/usr/share/taler-exchange/config.d", R_OK|X_OK) = 0
openat(AT_FDCWD, "/usr/share/taler-exchange/config.d", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5
newfstatat(5, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
getdents64(5, 0x5652360f0a50 /* 19 entries */, 32768) = 832
getdents64(5, 0x5652360f0a50 /* 0 entries */, 32768) = 0
close(5) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=2137, ...}, 0) = 0

Christian Grothoff

2025-04-14 11:49

manager   ~0024526

Hmm. A bit strange that you get 19 entries and I get 17. But the real question is why the code doesn't even attempt to open the files. If you did compile (or were to compile) the code with "-g -O0" you could use gdb and we should see where it freaks out:

gdb /usr/bin/taler-exchange-config
(gdb) break collect_files_cb
(gdb) run
=> you should see 17 calls to 'collect_files_cb' (excluding the "." and "..")
Debug using mostly:
(gdb) n # for next
(gdb) bt full # show entire stacktrace, possibly useful especially after we get somewhere interesting...

After this point in the code where you put the breakpoint, GNUNET_DISK_directory_scan() *should* return 17 to the caller GNUNET_CONFIGURATION_load_from().
There, the result should be qsort'ed, and then each filename given to GNUNET_CONFIGURATION_parse(), unless they do not end in ".conf" (but in that case, a WARNING is logged).

GNUNET_CONFIGURATION_parse() expands the filename and then calls stat(), which is something we do not see in your strace, so before then there must be the error.

However, the only plausible one is the cycle detection logic (in GNUNET_CONFIGURATION_parse()) and that can't be it as it would have logged an ERROR if it did something.

So anyway, if you can, it would be great if you could gdb around this code path a bit, to see where it takes a wrong turn. I did visual inspection, and see nothing even suspicious.

reynir

2025-04-14 13:44

reporter   ~0024527

The two extra files are just vim swap files. I have not modified the files there as to the best of my knowledge. I've only used vim there to view the files and read the documentation therein. I think I will not have time to build and run a debug taler-exchange build until after easter.

$ ls -a
.
..
coins.conf
currencies.conf
exchange.conf
exchangedb.conf
exchangedb-postgres.conf
exchange-offline.conf
exchange-paths.conf
kyclogic.conf
kyclogic-kycaid.conf
kyclogic-oauth2.conf
kyclogic-persona.conf
taler-exchange.conf
taler-exchange-secmod-cs.conf
taler-exchange-secmod-eddsa.conf
.taler-exchange-secmod-eddsa.conf.swp
taler-exchange-secmod-rsa.conf
.taler-exchange-secmod-rsa.conf.swp

reynir

2025-04-14 13:49

reporter   ~0024528

Ok interesting. Removing the swap files I get progress! The config files are read. So I guess the error happens when there's a file in that directory that doesn't ind in .conf or something like that.

reynir

2025-04-14 13:58

reporter   ~0024529

More data points: If I do `touch /usr/share/taler-exchange/config.d/not-a-config` I observe taler-exchange-config looks at the files in the directory. But if I do `touch /usr/share/taler-exchange/config.d/.not-a-config` it does not look at the files there. So the problem is perhaps files with a leading dot for whatever reason.

Christian Grothoff

2025-04-14 15:07

manager   ~0024531

Ok, fixed in gnunet.git :: b25dae060..f7e69b2ee

Note: you SHOULD have seen a warning in the logs, at least I did get one. But of course the config loader should not have stopped if there was a file with the wrong name it.

Note that this fix will only be in GNUnet >= 0.24.2.

Issue History

Date Modified Username Field Change
2025-04-08 13:08 reynir New Issue
2025-04-08 13:08 reynir Status new => assigned
2025-04-08 13:08 reynir Assigned To => Christian Grothoff
2025-04-08 13:37 Christian Grothoff Note Added: 0024442
2025-04-08 13:37 Christian Grothoff Status assigned => feedback
2025-04-08 15:32 reynir Note Added: 0024443
2025-04-08 15:32 reynir Status feedback => assigned
2025-04-08 17:20 reynir Note Added: 0024444
2025-04-08 19:20 Christian Grothoff Note Added: 0024449
2025-04-09 09:58 reynir Note Added: 0024459
2025-04-09 10:51 Christian Grothoff Note Added: 0024466
2025-04-09 11:40 reynir Note Added: 0024471
2025-04-10 13:53 Christian Grothoff Note Added: 0024497
2025-04-14 10:52 reynir Note Added: 0024524
2025-04-14 10:52 reynir File Added: strace.txt
2025-04-14 11:00 reynir Note Added: 0024525
2025-04-14 11:49 Christian Grothoff Note Added: 0024526
2025-04-14 13:44 reynir Note Added: 0024527
2025-04-14 13:49 reynir Note Added: 0024528
2025-04-14 13:58 reynir Note Added: 0024529
2025-04-14 15:07 Christian Grothoff Note Added: 0024531
2025-04-14 15:07 Christian Grothoff Status assigned => resolved
2025-04-14 15:07 Christian Grothoff Resolution open => fixed
2025-04-14 15:07 Christian Grothoff Fixed in Version => 1.0
2025-04-14 15:07 Christian Grothoff Target Version => 1.0