This debdiff re-introduces the forwarding code, it also cleans a number of things up:
- It fixes a regression of apport on systems using upstart
- It replaces the is_container logic with a is_same_ns function that lets us check things more carefully.
- If the pidns differs but mntns doesn't, apport will process the crash locally, using the global pid.
- If the mntns differs but pidns doesn't, then the crash is just plain ignored
- If pidns and mntns differ and an apport receiver socket can be found, the crash is forwarded. If none can be found, the crash is ignored.
- All arguments except the first and last are now sent to the receiver.
- The receiver has a check for the number of received arguments, ignoring any crash that doesn't match its view of the world.
- The ucred is used for pid passing, translating the pid across pidns.
I've done the following tests:
- Standard crash on host => crash in /var/crash of host
- Crash on host in a different pidns => crash in /var/crash of host
- Crash on host in a different mtnns => no crash file
- Crash on host in a different pidns and mntns => no crash file (no receiver found)
- Crash in container with receiver setup => crash in /var/crash of container
This debdiff re-introduces the forwarding code, it also cleans a number of things up:
- It fixes a regression of apport on systems using upstart
- It replaces the is_container logic with a is_same_ns function that lets us check things more carefully.
- If the pidns differs but mntns doesn't, apport will process the crash locally, using the global pid.
- If the mntns differs but pidns doesn't, then the crash is just plain ignored
- If pidns and mntns differ and an apport receiver socket can be found, the crash is forwarded. If none can be found, the crash is ignored.
- All arguments except the first and last are now sent to the receiver.
- The receiver has a check for the number of received arguments, ignoring any crash that doesn't match its view of the world.
- The ucred is used for pid passing, translating the pid across pidns.
I've done the following tests:
- Standard crash on host => crash in /var/crash of host
- Crash on host in a different pidns => crash in /var/crash of host
- Crash on host in a different mtnns => no crash file
- Crash on host in a different pidns and mntns => no crash file (no receiver found)
- Crash in container with receiver setup => crash in /var/crash of container