SocketMessenger::update_session_creds() fails to get client PID, causing "[ FAILED ] PromptSessionClientAPI.client_pid_is_associated_with_session" on kernel 4.4 (but kernel 4.3 works)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
GLibC |
New
|
Undecided
|
Unassigned | ||
Mir |
Invalid
|
Critical
|
Unassigned | ||
linux (Ubuntu) |
Fix Released
|
Critical
|
Unassigned | ||
Trusty |
Fix Released
|
Undecided
|
Unassigned | ||
Vivid |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Since updating to the 4.4.0-2 kernel recvmsg() fails SCM_CREDENTIALS request with EOPNOTSUPP.
This manifests as a test failure in Mir:
[ RUN ] PromptSessionCl
unknown file: Failure
Test case:
#include <stdlib.h>
#include <stdio.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <assert.h>
#include <errno.h>
#include <string.h>
int main()
{
enum { server, client, size };
int socket_fd[size];
int const opt = 1;
assert(
char const msg[] = "A random message";
send(
assert(
union {
struct cmsghdr cmh;
char control[
} control_un;
control_
control_
control_
msghdr msgh;
msgh.msg_name = NULL;
msgh.
msgh.msg_iov = NULL;
msgh.msg_iovlen = 0;
msgh.
msgh.
errno = 0;
if (recvmsg(
{
}
else
{
}
}
===
Kernel-Description: recvmsg() fails SCM_CREDENTIALS request with EOPNOTSUPP.
Changed in mir: | |
status: | New → Confirmed |
assignee: | nobody → Alan Griffiths (alan-griffiths) |
Changed in mir: | |
importance: | High → Critical |
summary: |
- mir_acceptance_tests [ FAILED ] - PromptSessionClientAPI.client_pid_is_associated_with_session + SocketMessenger::update_session_creds() fails to get client PID |
description: | updated |
Changed in mir: | |
assignee: | Alan Griffiths (alan-griffiths) → nobody |
Changed in linux (Ubuntu): | |
status: | New → Confirmed |
Changed in linux (Ubuntu): | |
importance: | Undecided → High |
tags: | added: kernel-key performing-bisect |
Changed in linux (Ubuntu): | |
importance: | High → Critical |
summary: |
- SocketMessenger::update_session_creds() fails to get client PID + SocketMessenger::update_session_creds() fails to get client PID, causing + "[ FAILED ] + PromptSessionClientAPI.client_pid_is_associated_with_session" |
description: | updated |
Changed in mir: | |
importance: | High → Critical |
Changed in linux (Ubuntu): | |
importance: | Critical → High |
Changed in linux (Ubuntu): | |
status: | Confirmed → In Progress |
assignee: | nobody → Joseph Salisbury (jsalisbury) |
summary: |
SocketMessenger::update_session_creds() fails to get client PID, causing "[ FAILED ] - PromptSessionClientAPI.client_pid_is_associated_with_session" + PromptSessionClientAPI.client_pid_is_associated_with_session" on kernel + 4.4 (but kernel 4.3 works) |
description: | updated |
Changed in linux (Ubuntu): | |
status: | In Progress → Fix Committed |
Changed in mir: | |
status: | Confirmed → Invalid |
tags: | removed: kernel-key |
Changed in linux (Ubuntu): | |
status: | Confirmed → In Progress |
tags: | added: trusty wily |
Changed in linux (Ubuntu Trusty): | |
status: | New → Fix Committed |
Changed in linux (Ubuntu Vivid): | |
status: | New → Fix Committed |
tags: |
added: verification-done-trusty verification-done-vivid removed: verification-needed-trusty verification-needed-vivid |
Changed in linux (Ubuntu): | |
status: | In Progress → Fix Released |
It appears this has not come from any Mir code change. It happens even with older Mir code. Something in the OS (xenial) has changed to cause this bug.