+ AlexR, haosdent

For posterity, the root cause of this problem is that when agent is running
inside a docker container and `--docker_mesos_image` flag is specified, the
pid namespace of the executor container (which initiate the health check)
is different than the root pid namespace. Therefore, getting the network
namespace handle using `/proc/<pid>/ns/net` does not work because the 'pid'
here is in the root pid namespace (reported by docker daemon).

Alex and haosdent, I think we should fix this issue. As suggested above, we
can launch the executor container with --pid=host if `--docker_mesos_image`
is specified.

- Jie

On Wed, Mar 29, 2017 at 3:56 AM, tommy xiao <[email protected]> wrote:

> it resolved by add --pid=host.  thanks for community guys supports. thanks
> a lot.
>
> 2017-03-29 9:52 GMT+08:00 tommy xiao <[email protected]>:
>
>> My Environment is specified:
>>
>> mesos 1.2 in docker containerized.
>>
>> send a sample nginx docker container with mesos native health check.
>>
>> then get sandbox core dump.
>>
>> i have digg into more information for your reference:
>>
>> in mesos slave container, i can only see task container pid. but i can't
>> found process nginx pid.
>>
>> but in host console, i can found the nginx pid. so how can i get the pid
>> in container?
>>
>>
>>
>>
>> 2017-03-28 13:49 GMT+08:00 tommy xiao <[email protected]>:
>>
>>> https://issues.apache.org/jira/browse/MESOS-6184
>>>
>>> anyone give some hint?
>>>
>>> ```
>>>
>>> I0328 11:48:12.922181 48 exec.cpp:162] Version: 1.2.0
>>> I0328 11:48:12.929252 54 exec.cpp:237] Executor registered on agent
>>> a29dc3a5-3e3f-4058-8ab4-dd7de2ae58d1-S4
>>> I0328 11:48:12.931640 54 docker.cpp:850] Running docker -H
>>> unix:///var/run/docker.sock run --cpu-shares 10 --memory 33554432
>>> --env-file /tmp/gvqGyb -v /data/mesos/slaves/a29dc3a5-3e
>>> 3f-4058-8ab4-dd7de2ae58d1-S4/frameworks/d7ef5d2b-f924-42d9-a
>>> 274-c020afba6bce-0000/executors/0-hc-xychu-datamanmesos-2f3b
>>> 47f9ffc048539c7b22baa6c32d8f/runs/458189b8-2ff4-4337-ad3a-67321e96f5cb:/mnt/mesos/sandbox
>>> --net bridge --label=USER_NAME=xychu --label=GROUP_NAME=groupautotest
>>> --label=APP_ID=hc --label=VCLUSTER=clusterautotest --label=USER=xychu
>>> --label=CLUSTER=datamanmesos --label=SLOT=0 --label=APP=hc -p 31000:80/tcp
>>> --name 
>>> mesos-a29dc3a5-3e3f-4058-8ab4-dd7de2ae58d1-S4.458189b8-2ff4-4337-ad3a-67321e96f5cb
>>> nginx
>>> I0328 11:48:16.145714 53 health_checker.cpp:196] Ignoring failure as
>>> health check still in grace period
>>> W0328 11:48:26.289958 49 health_checker.cpp:202] Health check failed 1
>>> times consecutively: HTTP health check failed: curl returned terminated
>>> with signal Aborted (core dumped): ABORT: (../../../3rdparty/libprocess/
>>> include/process/posix/subprocess.hpp:190): Failed to execute
>>> Subprocess::ChildHook: Failed to enter the net namespace of pid 18596: Pid
>>> 18596 does not exist
>>>
>>>    -
>>>       -
>>>          - Aborted at 1490672906 (unix time) try "date -d @1490672906"
>>>          if you are using GNU date ***
>>>          PC: @ 0x7f26bfb485f7 __GI_raise
>>>          - SIGABRT (@0x4a) received by PID 74 (TID 0x7f26ba152700) from
>>>          PID 74; stack trace: ***
>>>          @ 0x7f26c0703100 (unknown)
>>>          @ 0x7f26bfb485f7 __GI_raise
>>>          @ 0x7f26bfb49ce8 __GI_abort
>>>          @ 0x7f26c315778e _Abort()
>>>          @ 0x7f26c31577cc _Abort()
>>>          @ 0x7f26c237a4b6 process::internal::childMain()
>>>          @ 0x7f26c2379e9c std::_Function_handler<>::_M_invoke()
>>>          @ 0x7f26c2379e53 process::internal::defaultClone()
>>>          @ 0x7f26c237b951 process::internal::cloneChild()
>>>          @ 0x7f26c237954f process::subprocess()
>>>          @ 0x7f26c15a9fb1 mesos::internal::checks::Healt
>>>          hCheckerProcess::httpHealthCheck()
>>>          @ 0x7f26c15ababd mesos::internal::checks::Healt
>>>          hCheckerProcess::performSingleCheck()
>>>          @ 0x7f26c2331389 process::ProcessManager::resume()
>>>          @ 0x7f26c233a3f7 _ZNSt6thread5_ImplISt12_Bind_s
>>>          impleIFZN7process14ProcessManager12init_threadsEvEUt_vEEE6_M
>>>          _runEv
>>>          @ 0x7f26c04a1220 (unknown)
>>>          @ 0x7f26c06fbdc5 start_thread
>>>          @ 0x7f26bfc0928d __clone
>>>          W0328 11:48:36.340055 55 health_checker.cpp:202] Health check
>>>          failed 2 times consecutively: HTTP health check failed: curl 
>>> returned
>>>          terminated with signal Aborted (core dumped): ABORT:
>>>          
>>> (../../../3rdparty/libprocess/include/process/posix/subprocess.hpp:190):
>>>          Failed to execute Subprocess::ChildHook: Failed to enter the net 
>>> namespace
>>>          of pid 18596: Pid 18596 does not exist
>>>          - Aborted at 1490672916 (unix time) try "date -d @1490672916"
>>>          if you are using GNU date ***
>>>          PC: @ 0x7f26bfb485f7 __GI_raise
>>>          - SIGABRT (@0x4b) received by PID 75 (TID 0x7f26b9951700) from
>>>          PID 75; stack trace: ***
>>>          @ 0x7f26c0703100 (unknown)
>>>          @ 0x7f26bfb485f7 __GI_raise
>>>          @ 0x7f26bfb49ce8 __GI_abort
>>>          @ 0x7f26c315778e _Abort()
>>>          @ 0x7f26c31577cc _Abort()
>>>          @ 0x7f26c237a4b6 process::internal::childMain()
>>>          @ 0x7f26c2379e9c std::_Function_handler<>::_M_invoke()
>>>          @ 0x7f26c2379e53 process::internal::defaultClone()
>>>          @ 0x7f26c237b951 process::internal::cloneChild()
>>>          @ 0x7f26c237954f process::subprocess()
>>>          @ 0x7f26c15a9fb1 mesos::internal::checks::Healt
>>>          hCheckerProcess::httpHealthCheck()
>>>          @ 0x7f26c15ababd mesos::internal::checks::Healt
>>>          hCheckerProcess::performSingleCheck()
>>>          @ 0x7f26c2331389 process::ProcessManager::resume()
>>>          @ 0x7f26c233a3f7 _ZNSt6thread5_ImplISt12_Bind_s
>>>          impleIFZN7process14ProcessManager12init_threadsEvEUt_vEEE6_M
>>>          _runEv
>>>          @ 0x7f26c04a1220 (unknown)
>>>          @ 0x7f26c06fbdc5 start_thread
>>>          @ 0x7f26bfc0928d __clone
>>>          W0328 11:48:46.386533 49 health_checker.cpp:202] Health check
>>>          failed 3 times consecutively: HTTP health check failed: curl 
>>> returned
>>>          terminated with signal Aborted (core dumped): ABORT:
>>>          
>>> (../../../3rdparty/libprocess/include/process/posix/subprocess.hpp:190):
>>>          Failed to execute Subprocess::ChildHook: Failed to enter the net 
>>> namespace
>>>          of pid 18596: Pid 18596 does not exist
>>>          - Aborted at 1490672926 (unix time) try "date -d @1490672926"
>>>          if you are using GNU date ***
>>>          PC: @ 0x7f26bfb485f7 __GI_raise
>>>          - SIGABRT (@0x4c) received by PID 76 (TID 0x7f26ba152700) from
>>>          PID 76; stack trace: ***
>>>          @ 0x7f26c0703100 (unknown)
>>>          @ 0x7f26bfb485f7 __GI_raise
>>>          @ 0x7f26bfb49ce8 __GI_abort
>>>          @ 0x7f26c315778e _Abort()
>>>          @ 0x7f26c31577cc _Abort()
>>>          @ 0x7f26c237a4b6 process::internal::childMain()
>>>          @ 0x7f26c2379e9c std::_Function_handler<>::_M_invoke()
>>>          @ 0x7f26c2379e53 process::internal::defaultClone()
>>>          @ 0x7f26c237b951 process::internal::cloneChild()
>>>          @ 0x7f26c237954f process::subprocess()
>>>          @ 0x7f26c15a9fb1 mesos::internal::checks::Healt
>>>          hCheckerProcess::httpHealthCheck()
>>>          @ 0x7f26c15ababd mesos::internal::checks::Healt
>>>          hCheckerProcess::performSingleCheck()
>>>          @ 0x7f26c2331389 process::ProcessManager::resume()
>>>          @ 0x7f26c233a3f7 _ZNSt6thread5_ImplISt12_Bind_s
>>>          impleIFZN7process14ProcessManager12init_threadsEvEUt_vEEE6_M
>>>          _runEv
>>>          @ 0x7f26c04a1220 (unknown)
>>>          @ 0x7f26c06fbdc5 start_thread
>>>          @ 0x7f26bfc0928d __clone
>>>          W0328 11:48:56.531623 53 health_checker.cpp:202] Health check
>>>          failed 4 times consecutively: HTTP health check failed: curl 
>>> returned
>>>          terminated with signal Aborted (core dumped): ABORT:
>>>          
>>> (../../../3rdparty/libprocess/include/process/posix/subprocess.hpp:190):
>>>          Failed to execute Subprocess::ChildHook: Failed to enter the net 
>>> namespace
>>>          of pid 18596: Pid 18596 does not exist
>>>          - Aborted at 1490672936 (unix time) try "date -d @1490672936"
>>>          if you are using GNU date ***
>>>          PC: @ 0x7f26bfb485f7 __GI_raise
>>>          - SIGABRT (@0x4d) received by PID 77 (TID 0x7f26b814e700) from
>>>          PID 77; stack trace: ***
>>>          @ 0x7f26c0703100 (unknown)
>>>          @ 0x7f26bfb485f7 __GI_raise
>>>          @ 0x7f26bfb49ce8 __GI_abort
>>>          @ 0x7f26c315778e _Abort()
>>>          @ 0x7f26c31577cc _Abort()
>>>          @ 0x7f26c237a4b6 process::internal::childMain()
>>>          @ 0x7f26c2379e9c std::_Function_handler<>::_M_invoke()
>>>          @ 0x7f26c2379e53 process::internal::defaultClone()
>>>          @ 0x7f26c237b951 process::internal::cloneChild()
>>>          @ 0x7f26c237954f process::subprocess()
>>>          @ 0x7f26c15a9fb1 mesos::internal::checks::Healt
>>>          hCheckerProcess::httpHealthCheck()
>>>          @ 0x7f26c15ababd mesos::internal::checks::Healt
>>>          hCheckerProcess::performSingleCheck()
>>>          @ 0x7f26c2331389 process::ProcessManager::resume()
>>>          @ 0x7f26c233a3f7 _ZNSt6thread5_ImplISt12_Bind_s
>>>          impleIFZN7process14ProcessManager12init_threadsEvEUt_vEEE6_M
>>>          _runEv
>>>          @ 0x7f26c04a1220 (unknown)
>>>          @ 0x7f26c06fbdc5 start_thread
>>>          @ 0x7f26bfc0928d __clone
>>>          W0328 11:49:06.678515 50 health_checker.cpp:202] Health check
>>>          failed 5 times consecutively: HTTP health check failed: curl 
>>> returned
>>>          terminated with signal Aborted (core dumped): ABORT:
>>>          
>>> (../../../3rdparty/libprocess/include/process/posix/subprocess.hpp:190):
>>>          Failed to execute Subprocess::ChildHook: Failed to enter the net 
>>> namespace
>>>          of pid 18596: Pid 18596 does not exist
>>>          - Aborted at 1490672946 (unix time) try "date -d @1490672946"
>>>          if you are using GNU date ***
>>>          PC: @ 0x7f26bfb485f7 __GI_raise
>>>          - SIGABRT (@0x4e) received by PID 78 (TID 0x7f26b9951700) from
>>>          PID 78; stack trace: ***
>>>          @ 0x7f26c0703100 (unknown)
>>>          @ 0x7f26bfb485f7 __GI_raise
>>>          @ 0x7f26bfb49ce8 __GI_abort
>>>          @ 0x7f26c315778e _Abort()
>>>          @ 0x7f26c31577cc _Abort()
>>>          @ 0x7f26c237a4b6 process::internal::childMain()
>>>          @ 0x7f26c2379e9c std::_Function_handler<>::_M_invoke()
>>>          @ 0x7f26c2379e53 process::internal::defaultClone()
>>>          @ 0x7f26c237b951 process::internal::cloneChild()
>>>          @ 0x7f26c237954f process::subprocess()
>>>          @ 0x7f26c15a9fb1 mesos::internal::checks::Healt
>>>          hCheckerProcess::httpHealthCheck()
>>>          @ 0x7f26c15ababd mesos::internal::checks::Healt
>>>          hCheckerProcess::performSingleCheck()
>>>          @ 0x7f26c2331389 process::ProcessManager::resume()
>>>          @ 0x7f26c233a3f7 _ZNSt6thread5_ImplISt12_Bind_s
>>>          impleIFZN7process14ProcessManager12init_threadsEvEUt_vEEE6_M
>>>          _runEv
>>>          @ 0x7f26c04a1220 (unknown)
>>>          @ 0x7f26c06fbdc5 start_thread
>>>          @ 0x7f26bfc0928d __clone
>>>          I0328 11:49:06.678840 50 health_checker.cpp:130] Health
>>>          checking stopped
>>>          I0328 11:49:06.880620 49 health_checker.cpp:130] Health
>>>          checking stopped
>>>
>>>
>>>
>>> ```
>>>
>>> --
>>> Deshi Xiao
>>> Twitter: xds2000
>>> E-mail: xiaods(AT)gmail.com
>>>
>>
>>
>>
>> --
>> Deshi Xiao
>> Twitter: xds2000
>> E-mail: xiaods(AT)gmail.com
>>
>
>
>
> --
> Deshi Xiao
> Twitter: xds2000
> E-mail: xiaods(AT)gmail.com
>

Reply via email to