From 7bf914a22e2427fccbe563c7165aaa8c4ebb95d9 Mon Sep 17 00:00:00 2001 From: ewen Date: Tue, 11 Sep 2018 21:37:25 +0000 Subject: [PATCH] Added a comment: timer_create --- ..._dacfb426f7e67e984bb9281a40427e85._comment | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 doc/bugs/Synology_NAS__58___timer__95__create__58___Bad_address/comment_5_dacfb426f7e67e984bb9281a40427e85._comment diff --git a/doc/bugs/Synology_NAS__58___timer__95__create__58___Bad_address/comment_5_dacfb426f7e67e984bb9281a40427e85._comment b/doc/bugs/Synology_NAS__58___timer__95__create__58___Bad_address/comment_5_dacfb426f7e67e984bb9281a40427e85._comment new file mode 100644 index 0000000000..3dbaa43558 --- /dev/null +++ b/doc/bugs/Synology_NAS__58___timer__95__create__58___Bad_address/comment_5_dacfb426f7e67e984bb9281a40427e85._comment @@ -0,0 +1,26 @@ +[[!comment format=mdwn + username="ewen" + avatar="http://cdn.libravatar.org/avatar/605b2981cb52b4af268455dee7a4f64e" + subject="timer_create" + date="2018-09-11T21:37:24Z" + content=""" +It does very much look like something has removed `timer_create` from the Synology NAS. Eg, if I statically compile the [example `timer_create` program in the man page](http://man7.org/linux/man-pages/man2/timer_create.2.html) on Debian Jessie/Stretch with: + + gcc -o test_timer_create.jessie -static test_timer_create.c -lrt -lpthread + +and try to run it on the Synology NAS now, I get effectively the same symptoms: + + ewen@nas01:~$ ./test_timer_create.jessie 1 100 + Establishing handler for signal 34 + Blocking signal 34 + timer_create: Bad address + ewen@nas01:~$ + +(Unfortunately I have no easy way to check if with a previous Synology NAS version.) + +The same manpage notes that it *can* be configured out of the kernel: \"Since Linux 4.10, support for POSIX timers is a configurable option that is enabled by default. Kernel support can be disabled via the CONFIG_POSIX_TIMERS option.\" for which [the patch](https://patchwork.kernel.org/patch/9422453/) notes that \"Some embedded systems have no use for them\". Obviously the Synology NAS is an embedded kernel situation. Given that the tripping point was the [release where Synology introduced their Meltdown/Spectre fixes](https://www.synology.com/en-uk/releaseNote/DS216+II#ver_23739-2), I imagine that they backported a *lot* of related fixes from later kernels, and it seems likely that they did deliberately turn off `CONFIG_POSIX_TIMERS`, even if their 1st level/2nd level helpdesk did not know about it, since timing RAM accesses is pretty much key to the common Meltdown/Spectre exploits, and thus various projects removed \"high resolution\" timers. (Unfortunately there's no `/proc/config.gz` or similar that I can see, and while I can find some [Synology open source bits](https://sourceforge.net/projects/dsgpl/files/) I got bored digging to try to find a kernel config file.) + +The fact that later Haskell switched to `poll` probably explains why the later build works. At least that seems to a viable path forward for using `git-annex` on my NAS for now. + +Ewen +"""]]