kometchtech / docker-build

personal docker build for armhf and aarch64
15 stars 5 forks source link

[knot-resolver] entrypoint.shでの実行順序によりセグフォする #14

Open kometchtech opened 5 years ago

kometchtech commented 5 years ago

container実行にあたって、entrypoint.shで複数のプロセスを実行するが、実行順序によりプロセスがセグメンテーションフォルトを発生させる。

$ docker logs docker-env_kresd_1  
-f 1 -c /etc/knot-resolver/kresd.conf  
[ ta ] keyfile '/etc/knot-resolver/root.keys': doesn't exist, bootstrapping     
[system] bind to 'fe80::42:acff:fe16:2@53' (UDP): Invalid argument  
Segmentation fault (core dumped)    
Knot Resolver Cache Garbage Collector v. 0.2     
#!/usr/bin/env sh

# Deleting the trust anchor key file
rm -f /var/run/knot-resolver/root.keys
# Process execution
var="$@"
# Knot Resolver daemon
/usr/sbin/kresd $var &
# Knot Resolver Garbage Collector daemon
kres-cache-gc -c /var/run/knot-resolver -d 1000 &
# process foreground
tail -f /dev/null

また、各々のプロセスをsh -cで呼び出す形にした場合、順序関係なくセグフォする。

kometchtech commented 5 years ago

また、各々のプロセスをsh -cで呼び出す形にした場合、順序関係なくセグフォする。

今確認したら、順番さえ気を付ければセグメンテーションフォルトは発生しなかった。

#!/usr/bin/env sh

# Deleting the trust anchor key file
rm -f /var/run/knot-resolver/root.keys
# Process execution
var="$@"
# Knot Resolver Garbage Collector daemon
sh -c "kres-cache-gc -c /var/run/knot-resolver -d 1000"
# Knot Resolver daemon
sh -c "/usr/sbin/kresd $var"
# process foreground
tail -f /dev/null