すぐに失敗したりまったく表示されないサブプロセスのデバッグ

すぐに失敗したりまったく表示されないサブプロセスのデバッグ

実行可能なバイナリ(デバイスドライバ)があります。成功コード 0 で直ちに実行され終了します。あるコンピュータでは、pgrepを使用して表示できるすべての重要なサブプロセスを作成しますが、残念ながら他のコンピュータでは作成しません。実行結果は次straceのように終了します。

clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f2851597310) = 32167
exit_group(0)                           = ?
+++ exited with 0 +++

ただし、そのマシン(この場合は32167)ではプロセスが見つかりません。

何が間違っているのかを修正する方法がわかりません。子供が走るsudo execsnoop -xときは何も現れません。ソースコードは使用できません。 (主な目的ではありませんが、複製せずに代わりにフォアグラウンドですべてを実行することをお勧めします)。https://github.com/elmadjian/tobii_4C_for_linux/blob/main/tobii_usb_service/usr/local/sbin/tobiiusbserviced

編集:出力終了strace -f command

23747 clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f789577f310) = 23748
23747 exit_group(0)                     = ?
23748 umask(000)                        = 022
23748 setsid( <unfinished ...>
23747 +++ exited with 0 +++
23748 <... setsid resumed>)             = 23748
23748 brk(NULL)                         = 0x21bd000
23748 brk(0x21de000)                    = 0x21de000
23748 openat(AT_FDCWD, "/var/run/tobiiusb/tobiiusbservice.pid", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 ENOENT (No such file or directory)
23748 openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
23748 fstat(3, {st_mode=S_IFREG|0644, st_size=3648, ...}) = 0
23748 fstat(3, {st_mode=S_IFREG|0644, st_size=3648, ...}) = 0
23748 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) = 3648
23748 lseek(3, -2321, SEEK_CUR)         = 1327
23748 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) = 2321
23748 close(3)                          = 0
23748 socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3
23748 connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = -1 ENOENT (No such file or directory)
23748 close(3)                          = 0
23748 exit_group(1)                     = ?
23748 +++ exited with 1 +++

ベストアンサー1

connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = -1 ENOENT (No such file or directory)

syslogに書きたいのですがありません。システムに問題があり、/dev/log通常はこのファイルが必要です。

おすすめ記事