Which linknx binary are you using? Did you compile it yourself, or use a package compiled for another firmware? I don't remember having made a package for ddwrt.
From the trace messages, I see that the c++ exception handling is not working correctly. This is perhaps because the binary was not compiled with the right toolchain for ddwrt.
Regards,
Jean-François
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I used different MIPS versions (mainly Oleg) and also a self-compiled (cross-compiled/Oleg toolchain) - all the same error. Versions from 0.23 to 0.26.
So you recommend me to build a new cross-compile environment for dd-wrt?
Or are there some other MIPS version out there?
Thanks for your help!
Richard
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The meaning of EAGAIN depends on the function being called.
In the case of a read on a network socket, EAGAIN means:
Non-blocking I/O has been selected using O_NONBLOCK and no data was immediately available for reading
In the case of an accept on a network socket, EAGAIN means:
The socket is marked non-blocking and no connections are present to be accepted.
But in your case this is not the cause of the problem.
The problem is that an exception is thrown but the catch block doesn't receive it. I believe that even a very simple c++ example like the one below would fail:
hi!
i am not able to get linknx to run on my asus router with dd-wrt image. EIBD is successfully running with usb on knx.
here a strace of start:
root@KNXserver:/# strace linknx --config=/opt/etc/linknx.xml
execve("/opt/bin/linknx", ["linknx", "--config=/opt/etc/linknx.xml"], [/* 9 vars */]) = 0
old_mmap(NULL, 20, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0) = 0x2aaae000
stat("/opt/etc/ld.so.cache", {st_mode=S_IFREG|0644, st_size=1551, ...}) = 0
open("/opt/etc/ld.so.cache", O_RDONLY) = 3
old_mmap(NULL, 1551, PROT_READ, MAP_SHARED, 3, 0) = 0x2aab0000
close(3) = 0
open("", O_RDONLY) = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaaf000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0\260)\0\0004\0\0\0008"..., 4096) = 4096
old_mmap(NULL, 151552, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabf000
old_mmap(0x2aabf000, 75740, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, -1, 0) = 0x2aabf000
old_mmap(0x2aae2000, 1028, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x13000) = 0x2aae2000
old_mmap(0x2aae3000, 3572, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2aae3000
close(3) = 0
munmap(0x2aaaf000, 4096) = 0
open("/opt/lib/libdl.so.0", O_RDONLY) = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaaf000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0\360\7\0\0004\0\0\0<"..., 4096) = 4096
old_mmap(NULL, 77824, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aae4000
old_mmap(0x2aae4000, 8024, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, -1, 0) = 0x2aae4000
old_mmap(0x2aaf6000, 176, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0x2aaf6000
close(3) = 0
munmap(0x2aaaf000, 4096) = 0
open("/opt/lib/libnsl.so.0", O_RDONLY) = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaaf000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0p\3\0\0004\0\0\0T"..., 4096) = 1628
old_mmap(NULL, 69632, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaf7000
old_mmap(0x2aaf7000, 936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, -1, 0) = 0x2aaf7000
old_mmap(0x2ab07000, 972, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2ab07000
close(3) = 0
munmap(0x2aaaf000, 4096) = 0
open("/opt/lib/libm.so.0", O_RDONLY) = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 715842144, 0x2aaaa9fc) = 0x2aaaf000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0\300\25\0\0004\0\0\0h"..., 4096) = 4096
old_mmap(NULL, 126976, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ab08000
old_mmap(0x2ab08000, 60176, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2ab08000
old_mmap(0x2ab26000, 3216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xe000) = 0x2ab26000
close(3) = 0
munmap(0x2aaaf000, 4096) = 0
open("/opt/lib/libuClibc++.so.0", O_RDONLY) = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 715842428, 0x2aaaa9fc) = 0x2aaaf000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0\0\323\0\0004\0\0\0\254"..., 4096) = 4096
old_mmap(NULL, 270336, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ab27000
old_mmap(0x2ab27000, 180972, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, -1, 0) = 0x2ab27000
old_mmap(0x2ab63000, 22492, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2ab63000
close(3) = 0
munmap(0x2aaaf000, 4096) = 0
open("/opt/lib\260`\254*\240{\377\177/opt/lib/libuClibc++.so.0", O_RDONLY) = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 715842716, 0x2aaaa9fc) = 0x2aaaf000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0\220\311\0\0004\0\0\0\270"..., 4096) = 4096
old_mmap(NULL, 741376, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ab69000
old_mmap(0x2ab69000, 645496, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, -1, 0) = 0x2ab69000
old_mmap(0x2ac17000, 4696, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2ac17000
old_mmap(0x2ac19000, 19168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 3, 0x9e000) = 0x2ac19000
close(3) = 0
munmap(0x2aaaf000, 4096) = 0
open("/opt/lib/libgcc_s.so.1", O_RDONLY) = 3
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaaf000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0p\27\0\0004\0\0\0\0"..., 4096) = 4096
old_mmap(NULL, 126976, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ac1e000
old_mmap(0x2ac1e000, 58164, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, -1, 0) = 0x2ac1e000
old_mmap(0x2ac3c000, 2296, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2ac3c000
close(3) = 0
munmap(0x2aaaf000, 4096) = 0
munmap(0x2aab0000, 1551) = 0
ioctl(0, TIOCNXCL, {B38400 -opost isig icanon echo ...}) = 0
ioctl(1, TIOCNXCL, {B38400 opost isig icanon echo ...}) = 0
brk(0) = 0x4cb800
brk(0x4cc800) = 0x4cc800
brk(0x4cd000) = 0x4cd000
rt_sigaction(SIGPIPE, {0x10000000, [], SA_NOCLDSTOP}, {0x4d19c0, ~[HUP INT QUIT TRAP FPE SYS TERM USR2 CHLD URG IO TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ RT_0 RT_1 RT_2 RT_3 RT_4 RT_6 RT_7 RT_8 RT_9 RT_17 RT_20 RT_23 RT_25 RT_27 RT_29 RT_31 RT_32 RT_33 RT_34 RT_35 RT_37 RT_40 RT_44 RT_47 RT_49 RT_50 RT_53 RT_54 RT_56 RT_57 RT_58 RT_59 RT_60 RT_61 RT_62 RT_63 RT_64 RT_65 RT_66 RT_67 RT_68 RT_70 RT_71 RT_72 RT_73 RT_81 RT_84 RT_87 RT_89 RT_91 RT_93], SA_STACK|SA_RESTART|SA_INTERRUPT|SA_NODEFER|SA_NOCLDWAIT|0x7fe7bd4}, 16) = 0
pipe([0, 0]) = 3
fcntl(3, F_GETFL) = 0 (flags O_RDONLY)
fcntl(3, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
fcntl(4, F_GETFL) = 0x1 (flags O_WRONLY)
fcntl(4, F_SETFL, O_WRONLY|O_NONBLOCK) = 0
gettimeofday({1246880000, 97911}, NULL) = 0
brk(0x4ce000) = 0x4ce000
brk(0x4de000) = 0x4de000
gettimeofday({1246880000, 105006}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, ~[HUP INT QUIT ILL TRAP EMT SYS CHLD PWR WINCH URG IO CONT TTOU PROF XFSZ RT_0 RT_1 RT_2 RT_3 RT_4 RT_5 RT_7 RT_8 RT_10 RT_11 RT_13 RT_15 RT_16 RT_17 RT_18 RT_19 RT_20 RT_21 RT_22 RT_23 RT_24 RT_25 RT_26 RT_27 RT_28 RT_29 RT_30 RT_31 RT_32 RT_33 RT_34 RT_35 RT_39 RT_40 RT_41 RT_42 RT_43 RT_44 RT_45 RT_46 RT_47 RT_48 RT_49 RT_50 RT_51 RT_52 RT_53 RT_54 RT_55 RT_56 RT_57 RT_58 RT_59 RT_60 RT_61 RT_62 RT_63 RT_64 RT_65 RT_66 RT_67 RT_68 RT_69 RT_70 RT_71 RT_72 RT_73 RT_74 RT_75 RT_76 RT_77 RT_78 RT_79 RT_80 RT_81 RT_82 RT_83 RT_84 RT_85 RT_86 RT_87 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], [], 16) = 0
rt_sigaction(SIGUSR1, {0x8000000, [], SA_STACK|SA_INTERRUPT|0x2ac2f20}, {SIG_DFL, [], 0}, 16) = 0
sigaltstatck({ss_sp=0x4cd240, ss_flags=0x38 /* SS_??? */, ss_size=65536}, {ss_sp=0x2aaa8c08, ss_flags=0x2ab688b0 /* SS_??? */, ss_size=716598196}) = 0
getpid() = 1164
kill(1164, SIGUSR1) = 0
rt_sigsuspend(~[USR1] <unfinished ...>
--- SIGUSR1 (User defined signal 1) @ 0 (0) ---
<... rt_sigsuspend resumed> ) = -1 EINTR (Interrupted system call)
sigreturn(sigreturn: PTRACE_GETREGS : Input/output error
sigreturn: PTRACE_GETREGS : Input/output error
) = -1 EINTR (Interrupted system call)
sigaltstatck(NULL, {ss_sp=0x4cd240, ss_flags=0, ss_size=65536}) = 0
sigaltstatck({ss_sp=0x4cd240, ss_flags=0, ss_size=65536}, NULL) = 0
sigaltstatck(NULL, {ss_sp=0x4cd240, ss_flags=0, ss_size=65536}) = 0
rt_sigaction(SIGUSR1, {SIG_DFL, [], 0}, NULL, 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
gettimeofday({1246880000, 125275}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[], NULL, 16) = 0
gettimeofday({1246880000, 128159}, NULL) = 0
gettimeofday({1246880000, 128773}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, NULL, ~[KILL STOP], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
open("/opt/etc/linknx.xml", O_RDONLY) = 5
ioctl(5, TIOCNXCL, 0x7fff7ab8) = -1 ENOTTY (Inappropriate ioctl for device)
brk(0x4df000) = 0x4df000
_llseek(5, 0, [377], 0x4ccf20 /* SEEK_??? */) = 0
_llseek(5, 0, [3078928431627336408], SEEK_CUR) = 0
_llseek(5, 0, [377], 0x4ccf20 /* SEEK_??? */) = 0
read(5, "<?xml version=\"1.0\" ?> \n<config> "..., 377) = 377
brk(0x4e0000) = 0x4e0000
brk(0x4e1000) = 0x4e1000
close(5) = 0
time([1246880000]) = 1246880000
open("/etc/TZ", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/TZ", O_RDONLY) = -1 ENOENT (No such file or directory)
write(1, "2009-07-06 11:33:20 [ INFO] XmlIn"..., 652009-07-06 11:33:20 [ INFO] XmlInetServer: Starting on port 1028
) = 65
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 5
setsockopt(5, SOL_SOCKET, SO_REUSEADDR, "\1\0\0\0\0\0\0\0\0\0\0\0\2\0\4\4\0\0\0\0\0\0\0\0\0\0\0\0 \333M\0\244"..., 2147449484) = 0
bind(5, {sa_family=AF_INET, sin_port=htons(1028), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
listen(5, 10) = 0
brk(0x4f1000) = 0x4f1000
gettimeofday({13, 5027360}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, ~[HUP INT QUIT TRAP IOT FPE BUS CHLD URG IO TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ RT_0 RT_1 RT_2 RT_3 RT_5 RT_6 RT_9 RT_10 RT_11 RT_13 RT_15 RT_19 RT_20 RT_23 RT_25 RT_27 RT_29 RT_31 RT_32 RT_33 RT_34 RT_35 RT_36 RT_37 RT_38 RT_42 RT_43 RT_46 RT_47 RT_48 RT_50 RT_53 RT_54 RT_56 RT_57 RT_58 RT_59 RT_60 RT_61 RT_62 RT_63 RT_64 RT_65 RT_67 RT_68 RT_70 RT_71 RT_74 RT_77 RT_82 RT_85 RT_86 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], ~[HUP ILL RT_4 RT_6 RT_8 RT_9 RT_10 RT_11 RT_12 RT_13 RT_14 RT_15 RT_16 RT_17 RT_18 RT_19 RT_20 RT_21 RT_22 RT_23 RT_24 RT_25 RT_26 RT_27 RT_28 RT_29 RT_30 RT_31 RT_32 RT_33 RT_34 RT_35 RT_36 RT_37 RT_39 RT_44 RT_50 RT_51 RT_52 RT_53 RT_54 RT_57 RT_59 RT_61 RT_63 RT_64 RT_65 RT_66 RT_67 RT_68 RT_71 RT_82 RT_85 RT_86 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], 16) = 0
rt_sigaction(SIGUSR1, {0x8000000, [], SA_STACK|SA_INTERRUPT|0x2ac2f20}, {SIG_DFL, [], 0}, 16) = 0
sigaltstatck({ss_sp=0x4e0030, ss_flags=0, ss_size=65536}, {ss_sp=0, ss_flags=SS_DISABLE, ss_size=0}) = 0
getpid() = 1164
kill(1164, SIGUSR1) = 0
rt_sigsuspend(~[HUP INT QUIT TRAP IOT FPE BUS CHLD URG IO TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ RT_0 RT_1 RT_2 RT_3 RT_5 RT_6 RT_9 RT_10 RT_11 RT_13 RT_15 RT_19 RT_20 RT_23 RT_25 RT_27 RT_29 RT_31 RT_32 RT_33 RT_34 RT_35 RT_36 RT_37 RT_38 RT_42 RT_43 RT_46 RT_47 RT_48 RT_50 RT_53 RT_54 RT_56 RT_57 RT_58 RT_59 RT_60 RT_61 RT_62 RT_63 RT_64 RT_65 RT_67 RT_68 RT_70 RT_71 RT_74 RT_77 RT_82 RT_85 RT_86 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94] <unfinished ...>
--- SIGUSR1 (User defined signal 1) @ 0 (0) ---
<... rt_sigsuspend resumed> ) = -1 EINTR (Interrupted system call)
sigreturn(sigreturn: PTRACE_GETREGS : Input/output error
sigreturn: PTRACE_GETREGS : Input/output error
) = -1 EINTR (Interrupted system call)
sigaltstatck(NULL, {ss_sp=0x4e0030, ss_flags=0, ss_size=65536}) = 0
sigaltstatck({ss_sp=0x4e0030, ss_flags=0, ss_size=65536}, NULL) = 0
sigaltstatck(NULL, {ss_sp=0x4e0030, ss_flags=0, ss_size=65536}) = 0
rt_sigaction(SIGUSR1, {0x8000000, [], SA_STACK|SA_INTERRUPT|0x2ac2f20}, NULL, 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
stat("/tmp/linknx/", {st_mode=037777777777, st_size=0, ...}) = 0
open("/tmp/linknx/", O_RDONLY) = 6
fcntl(6, F_SETFD, FD_CLOEXEC) = 0
brk(0x4f2000) = 0x4f2000
stat("", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
open("", O_RDONLY) = 8
fcntl(8, F_SETFD, FD_CLOEXEC) = 0
brk(0x4f3000) = 0x4f3000
write(2, "terminate called after throwing a"..., 48terminate called after throwing an instance of ') = 48
write(2, "ticpp::Exception"..., 16ticpp::Exception) = 16
write(2, "'\n"..., 2'
) = 2
rt_sigprocmask(SIG_UNBLOCK, [IOT], NULL, 16) = 0
getpid() = 1164
kill(1164, SIGIOT) = 0
--- SIGIOT (Aborted) @ 0 (0) ---
+++ killed by SIGIOT +++
linknx.xml-file:
<?xml version="1.0" ?>
<config>
<services>
<knxconnection url="ip:127.0.0.1" />
<xmlserver type="inet" port="1028"/>
<persistence type="file" path="/tmp/linknx/"/>
</services>
<objects>
<object id="all_lights" gad="0/0/1">All lights</object>
<object id="light1" gad="4/1/0">light 1</object>
<object id="light2" gad="4/1/2">light 2</object>
</objects>
</config>
uname -a:
Linux KNXserver 2.4.37 #5797 Wed Jul 1 04:09:43 CEST 2009 mips unknown
The strange thing is when i delete the 3 <objects from xml-file linknx doesnt crash on startup but crashes when i send data with php.
Thank you for your help!
Richard
i have forgotten - linknx is 0.0.1.26...
Hi,
Which linknx binary are you using? Did you compile it yourself, or use a package compiled for another firmware? I don't remember having made a package for ddwrt.
From the trace messages, I see that the c++ exception handling is not working correctly. This is perhaps because the binary was not compiled with the right toolchain for ddwrt.
Regards,
Jean-François
Hi!
I used different MIPS versions (mainly Oleg) and also a self-compiled (cross-compiled/Oleg toolchain) - all the same error. Versions from 0.23 to 0.26.
So you recommend me to build a new cross-compile environment for dd-wrt?
Or are there some other MIPS version out there?
Thanks for your help!
Richard
I used now toolchain for ddwrt and compiled it once more. Same error :-(
Here a strace @ crashing when i sent a message with php to linknx:
rt_sigaction(SIGTERM, {0x4de070, ~[HUP INT QUIT TRAP IOT KILL BUS USR1 RT_0 RT_1 RT_2 RT_3 RT_4 RT_5 RT_6 RT_7 RT_8 RT_9 RT_10 RT_11 RT_12 RT_13 RT_14 RT_15 RT_16 RT_17 RT_18 RT_19 RT_20 RT_21 RT_22 RT_23 RT_24 RT_25 RT_26 RT_27 RT_28 RT_29 RT_30 RT_31 RT_32 RT_33 RT_34 RT_35 RT_37 RT_38 RT_41 RT_42 RT_48 RT_64 RT_65 RT_66 RT_67 RT_68 RT_69 RT_70 RT_71 RT_72 RT_73 RT_74 RT_75 RT_76 RT_77 RT_78 RT_79 RT_80 RT_81 RT_82 RT_83 RT_84 RT_85 RT_86 RT_87 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], SA_STACK|SA_RESTART|SA_INTERRUPT|SA_NODEFER|SA_SIGINFO|SA_NOCLDWAIT|0x7fe7ba4}, {0x4ddb78, ~[HUP INT TRAP EMT SEGV USR1 RT_0 RT_1 RT_2 RT_3 RT_4 RT_6 RT_7 RT_8 RT_9 RT_17 RT_20 RT_23 RT_25 RT_27 RT_29 RT_31 RT_32 RT_33 RT_34 RT_37 RT_39 RT_43 RT_48 RT_64 RT_65 RT_66 RT_67 RT_68 RT_70 RT_71 RT_72 RT_73 RT_81 RT_84 RT_87 RT_89 RT_91 RT_93], SA_STACK|SA_RESTART|SA_INTERRUPT|SA_NODEFER|SA_SIGINFO|SA_NOCLDWAIT|0x7fe7bb4}, 16) = 0
brk(0x502000) = 0x502000
gettimeofday({1247181125, 979633}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, [USR1], [], 16) = 0
rt_sigaction(SIGUSR1, {0x8000000, [], SA_STACK|SA_INTERRUPT|0x2ac2f20}, {SIG_DFL, [], 0}, 16) = 0
sigaltstatck({ss_sp=0x4f16a0, ss_flags=0, ss_size=65536}, {ss_sp=0, ss_flags=SS_DISABLE, ss_size=0}) = 0
getpid() = 676
kill(676, SIGUSR1) = 0
rt_sigsuspend(~[USR1] <unfinished ...>
--- SIGUSR1 (User defined signal 1) @ 0 (0) ---
<... rt_sigsuspend resumed> ) = -1 EINTR (Interrupted system call)
sigreturn(sigreturn: PTRACE_GETREGS : Input/output error
sigreturn: PTRACE_GETREGS : Input/output error
) = -1 EINTR (Interrupted system call)
sigaltstatck(NULL, {ss_sp=0x4f16a0, ss_flags=0, ss_size=65536}) = 0
sigaltstatck({ss_sp=0x4f16a0, ss_flags=SS_DISABLE, ss_size=65536}, NULL) = 0
sigaltstatck(NULL, {ss_sp=0, ss_flags=SS_DISABLE, ss_size=0}) = 0
rt_sigaction(SIGUSR1, {SIG_DFL, [], 0}, NULL, 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
brk(0x512000) = 0x512000
gettimeofday({1247181125, 997311}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, ~[RT_33 RT_34 RT_35 RT_36 RT_37 RT_38 RT_39 RT_40 RT_41 RT_42 RT_43 RT_44 RT_45 RT_46 RT_47 RT_48 RT_49 RT_50 RT_51 RT_52 RT_53 RT_54 RT_55 RT_56 RT_57 RT_58 RT_59 RT_60 RT_61 RT_62 RT_63 RT_64 RT_65 RT_66 RT_67 RT_68 RT_69 RT_70 RT_71 RT_72 RT_73 RT_74 RT_75 RT_76 RT_77 RT_78 RT_79 RT_80 RT_81 RT_82 RT_83 RT_84 RT_85 RT_86 RT_87 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], [], 16) = 0
rt_sigaction(SIGUSR1, {0x8000000, [], SA_STACK|SA_INTERRUPT|0x2ac2f20}, {SIG_DFL, [], 0}, 16) = 0
sigaltstatck({ss_sp=0x5016a8, ss_flags=0, ss_size=65536}, {ss_sp=0, ss_flags=SS_DISABLE, ss_size=0}) = 0
getpid() = 676
kill(676, SIGUSR1) = 0
rt_sigsuspend(~[USR1] <unfinished ...>
--- SIGUSR1 (User defined signal 1) @ 0 (0) ---
<... rt_sigsuspend resumed> ) = -1 EINTR (Interrupted system call)
sigreturn(sigreturn: PTRACE_GETREGS : Input/output error
sigreturn: PTRACE_GETREGS : Input/output error
) = -1 EINTR (Interrupted system call)
sigaltstatck(NULL, {ss_sp=0x5016a8, ss_flags=0, ss_size=65536}) = 0
sigaltstatck({ss_sp=0x5016a8, ss_flags=SS_DISABLE, ss_size=65536}, NULL) = 0
sigaltstatck(NULL, {ss_sp=0, ss_flags=SS_DISABLE, ss_size=0}) = 0
rt_sigaction(SIGUSR1, {SIG_DFL, [], 0}, NULL, 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigpending([]) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
gettimeofday({1247181126, 86582}, NULL) = 0
rt_sigpending([]) = 0
read(3, 0x4db758, 128) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGINT, {SIG_DFL, ~[], SA_STACK|SA_INTERRUPT|0x2ac37a0}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigaction(SIGTERM, {SIG_DFL, ~[], SA_STACK|SA_INTERRUPT|0x2ac37a0}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR WINCH URG IO STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ], ~[KILL STOP], 16) = 0
_newselect(4, [3], [], [], {0, 0}) = 0 (Timeout)
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
rt_sigaction(SIGINT, {0x10000000, [], SA_NOCLDSTOP}, NULL, 16) = 0
rt_sigaction(SIGTERM, {0x10000000, [], SA_NOCLDSTOP}, NULL, 16) = 0
gettimeofday({1247181126, 102077}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, NULL, ~[KILL STOP], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
fcntl(5, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(5, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(5, F_SETFL, O_RDWR|O_NONBLOCK) = 0
accept(5, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable)
fcntl(5, F_GETFL) = 0x82 (flags O_RDWR|O_NONBLOCK)
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
gettimeofday({1247181126, 108108}, NULL) = 0
rt_sigpending([]) = 0
read(3, 0x4db758, 128) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGINT, {SIG_DFL, [], SA_STACK|SA_INTERRUPT|0x2ac37a0}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigaction(SIGTERM, {SIG_DFL, [], SA_STACK|SA_INTERRUPT|0x2ac37a0}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR WINCH URG IO STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ], ~[KILL STOP], 16) = 0
_newselect(6, [3 5], [], [], NULL) = 0 (Timeout)
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
rt_sigaction(SIGINT, {SIG_DFL, ~[], SA_STACK|SA_INTERRUPT|0x2ac37a0}, NULL, 16) = 0
rt_sigaction(SIGTERM, {SIG_DFL, ~[], SA_STACK|SA_INTERRUPT|0x2ac37a0}, NULL, 16) = 0
gettimeofday({1247181126, 134544}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, NULL, ~[KILL STOP], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
time(NULL) = 1247181126
gettimeofday({1247181126, 144614}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
gettimeofday({1247181126, 151298}, NULL) = 0
rt_sigpending([]) = 0
read(3, 0x4db758, 128) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGINT, {SIG_DFL, ~[], SA_STACK|SA_INTERRUPT|0x2ac37a0}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigaction(SIGTERM, {SIG_DFL, ~[], SA_STACK|SA_INTERRUPT|0x2ac37a0}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR WINCH URG IO STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ], ~[KILL STOP], 16) = 0
_newselect(6, [3 5], [], [], {0, 0}) = 0 (Timeout)
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_STACK|SA_INTERRUPT|0x2ac37a0}, NULL, 16) = 0
rt_sigaction(SIGTERM, {SIG_DFL, [], SA_STACK|SA_INTERRUPT|0x2ac37a0}, NULL, 16) = 0
gettimeofday({1247181126, 177702}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, NULL, ~[KILL STOP], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
open("/etc/resolv.conf", O_RDONLY) = 9
ioctl(9, TIOCNXCL, 0x5110b8) = -1 ENOTTY (Inappropriate ioctl for device)
brk(0x513000) = 0x513000
read(9, "nameserver 192.168.0.1\n"..., 4096) = 23
read(9, ""..., 4096) = 0
close(9) = 0
open("/etc/hosts", O_RDONLY) = 9
ioctl(9, TIOCNXCL, 0x5110e0) = -1 ENOTTY (Inappropriate ioctl for device)
read(9, "127.0.0.1\tlocalhost\n192.168.0.5\tK"..., 4096) = 42
read(9, ""..., 4096) = 0
close(9) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 9
fcntl(9, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(9, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(9, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(9, {sa_family=AF_INET, sin_port=htons(6720), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
fcntl(9, F_GETFL) = 0x82 (flags O_RDWR|O_NONBLOCK)
fcntl(9, F_SETFL, O_RDWR) = 0
fcntl(9, F_GETFL) = 0x2 (flags O_RDWR)
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
gettimeofday({1247181126, 253354}, NULL) = 0
rt_sigpending([]) = 0
read(3, 0x4db758, 128) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGINT, {0x10000000, ~[], SA_NOCLDSTOP}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigaction(SIGTERM, {0x10000000, ~[], SA_NOCLDSTOP}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR WINCH URG IO STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ], ~[KILL STOP], 16) = 0
_newselect(10, [3 5], [9], [], {9, 891260}) = 1 (in [3 5], out [9]], left {9, 900000})
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
rt_sigaction(SIGINT, {0x10000000, ~[], SA_NOCLDSTOP}, NULL, 16) = 0
rt_sigaction(SIGTERM, {0x10000000, ~[], SA_NOCLDSTOP}, NULL, 16) = 0
gettimeofday({1247181126, 177702}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, NULL, ~[KILL STOP], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
getsockopt(9, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
fcntl(9, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(9, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(9, F_SETFL, O_RDWR|O_NONBLOCK) = 0
_newselect(10, NULL, [9], NULL, {0, 0}) = 1 (out [9], left {0, 0})
write(9, "\0\5"..., 2) = 2
fcntl(9, F_GETFL) = 0x82 (flags O_RDWR|O_NONBLOCK)
fcntl(9, F_SETFL, O_RDWR) = 0
fcntl(9, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(9, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(9, F_SETFL, O_RDWR|O_NONBLOCK) = 0
_newselect(10, NULL, [9], NULL, {0, 0}) = 1 (out [9], left {0, 0})
write(9, "\0&M\0\0"..., 5) = 5
fcntl(9, F_GETFL) = 0x82 (flags O_RDWR|O_NONBLOCK)
fcntl(9, F_SETFL, O_RDWR) = 0
fcntl(9, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(9, F_GETFL) = 0x2 (flags O_RDWR)
_newselect(10, [9], NULL, NULL, {0, 0}) = 0 (Timeout)
fcntl(9, F_GETFL) = 0x2 (flags O_RDWR)
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
gettimeofday({1247181126, 329608}, NULL) = 0
rt_sigpending([]) = 0
read(3, 0x4db758, 128) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGINT, {SIG_DFL, ~[], SA_STACK|SA_INTERRUPT|0x2ac37a0}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigaction(SIGTERM, {SIG_DFL, ~[], SA_STACK|SA_INTERRUPT|0x2ac37a0}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR WINCH URG IO STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ], ~[KILL STOP], 16) = 0
_newselect(10, [3 5 9], [], [], NULL) = 1 (in [5])
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
rt_sigaction(SIGINT, {SIG_DFL, ~[], SA_STACK|SA_INTERRUPT|0x2ac37a0}, NULL, 16) = 0
rt_sigaction(SIGTERM, {SIG_DFL, ~[], SA_STACK|SA_INTERRUPT|0x2ac37a0}, NULL, 16) = 0
gettimeofday({1247181132, 221356}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, NULL, ~[KILL STOP], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
accept(5, 0, NULL) = 10
fcntl(5, F_GETFL) = 0x82 (flags O_RDWR|O_NONBLOCK)
fcntl(5, F_SETFL, O_RDWR) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
brk(0x522000) = 0x522000
gettimeofday({1247181132, 239076}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, [USR1], [], 16) = 0
rt_sigaction(SIGUSR1, {0x8000000, [], SA_STACK|SA_INTERRUPT|0x2ac2f20}, {SIG_DFL, [], 0}, 16) = 0
sigaltstatck({ss_sp=0x511ec0, ss_flags=0, ss_size=65536}, {ss_sp=0, ss_flags=SS_DISABLE, ss_size=0}) = 0
getpid() = 676
kill(676, SIGUSR1) = 0
rt_sigsuspend(~[USR1] <unfinished ...>
--- SIGUSR1 (User defined signal 1) @ 0 (0) ---
<... rt_sigsuspend resumed> ) = -1 EINTR (Interrupted system call)
sigreturn(sigreturn: PTRACE_GETREGS : Input/output error
sigreturn: PTRACE_GETREGS : Input/output error
) = -1 EINTR (Interrupted system call)
sigaltstatck(NULL, {ss_sp=0x511ec0, ss_flags=0, ss_size=65536}) = 0
sigaltstatck({ss_sp=0x511ec0, ss_flags=SS_DISABLE, ss_size=65536}, NULL) = 0
sigaltstatck(NULL, {ss_sp=0, ss_flags=SS_DISABLE, ss_size=0}) = 0
rt_sigaction(SIGUSR1, {SIG_DFL, [], 0}, NULL, 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
fcntl(5, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(5, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(5, F_SETFL, O_RDWR|O_NONBLOCK) = 0
accept(5, 0, NULL) = -1 EAGAIN (Resource temporarily unavailable)
fcntl(5, F_GETFL) = 0x82 (flags O_RDWR|O_NONBLOCK)
rt_sigprocmask(SIG_BLOCK, NULL, [], 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
gettimeofday({1247181132, 257402}, NULL) = 0
rt_sigpending([]) = 0
read(3, 0x4db758, 128) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGINT, {0x10000000, ~[], SA_NOCLDSTOP}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigaction(SIGTERM, {0x10000000, ~[], SA_NOCLDSTOP}, {0x10000000, [], SA_NOCLDSTOP}, 16) = 0
rt_sigprocmask(SIG_SETMASK, ~[HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR WINCH URG IO STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ], ~[KILL STOP], 16) = 0
_newselect(10, [3 5 9], [], [], {0, 0}) = 0 (Timeout)
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP], NULL, 16) = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_STACK|SA_INTERRUPT|0x2ac37a0}, NULL, 16) = 0
rt_sigaction(SIGTERM, {SIG_DFL, [], SA_STACK|SA_INTERRUPT|0x2ac37a0}, NULL, 16) = 0
gettimeofday({1247181132, 282231}, NULL) = 0
rt_sigprocmask(SIG_BLOCK, NULL, ~[KILL STOP], 16) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(10, F_GETFL) = 0x2 (flags O_RDWR)
_newselect(11, [10], NULL, NULL, {0, 0}) = 1 (in [10], left {0, 0})
read(10, "<read><object id='light_living'/>"..., 256) = 42
stat("/tmp", {st_mode=S_IFDIR|0777, st_size=0, ...}) = 0
open("/dev/urandom", O_RDONLY) = 11
read(11, "\200\355/\272\2458"..., 6) = 6
close(11) = 0
open("/tmp/tmpfeZVaP4", O_RDWR|O_CREAT|O_EXCL, 0600) = 11
rmdir("/tmp/tmpfeZVaP4") = -1 ENOTDIR (Not a directory)
unlink("/tmp/tmpfeZVaP4") = 0
fcntl(11, F_GETFL) = 0x2 (flags O_RDWR)
ioctl(11, TIOCNXCL, 0x5204c0) = -1 ENOTTY (Inappropriate ioctl for device)
brk(0x523000) = 0x523000
write(11, "<read><object id='light_living'/>"..., 42) = 42
_llseek(11, 0, [0], SEEK_SET) = 0
_llseek(11, 0, [42], SEEK_END) = 0
_llseek(11, 0, [42], SEEK_CUR) = 0
_llseek(11, 0, [0], SEEK_SET) = 0
read(11, "<read><object id='light_living'/>"..., 42) = 42
close(11) = 0
write(2, "terminate called after throwing a"..., 48terminate called after throwing an instance of ') = 48
write(2, "ticpp::Exception"..., 16ticpp::Exception) = 16
write(2, "'\n"..., 2'
) = 2
rt_sigprocmask(SIG_UNBLOCK, [IOT], NULL, 16) = 0
getpid() = 676
kill(676, SIGIOT) = 0
--- SIGIOT (Aborted) @ 0 (0) ---
+++ killed by SIGIOT +++
What ressource is meant with "-1 EAGAIN (Resource temporarily unavailable)"?
Thank you for your help!
RIchard
Hi,
The meaning of EAGAIN depends on the function being called.
In the case of a read on a network socket, EAGAIN means:
Non-blocking I/O has been selected using O_NONBLOCK and no data was immediately available for reading
In the case of an accept on a network socket, EAGAIN means:
The socket is marked non-blocking and no connections are present to be accepted.
But in your case this is not the cause of the problem.
The problem is that an exception is thrown but the catch block doesn't receive it. I believe that even a very simple c++ example like the one below would fail:
using namespace std;
int main() {
try {
throw "We throw an exception!";
}
catch( char * str ) {
cout << "Exception raised: " << str << '\n';
}
cout << "Program ends correctly";
return 0;
}
Regards,
Jean-François