This is the mail archive of the
cygwin
mailing list for the Cygwin project.
RE: Tons of cygserver errors
- From: "Lavrentiev, Anton (NIH/NLM/NCBI) [C]" <lavr at ncbi dot nlm dot nih dot gov>
- To: "cygwin at cygwin dot com" <cygwin at cygwin dot com>
- Date: Sat, 5 Apr 2014 02:35:59 +0000
- Subject: RE: Tons of cygserver errors
- Authentication-results: sourceware.org; auth=none
>> I canât push this through your list spam filter. Another attempt...
I was trying a few times, and finally deleted the strace attachment. Let's see if this will go through.
Excuse me for being a bit straightforward, but the spam filter this list is using is *really* stupid!
> Still, you're missing the cygcheck log,
Cygcheck log was attached to an earlier message from today (thread: exe.stackdump is always empty).
> and a simple testcase would be helpful
Here you go:
$ cat sem.c
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <sys/wait.h>
int main(void)
{
int ids = semget(0xdeadbeef, 1, IPC_CREAT | 0777);
int idm = shmget(0xdeadbeef, 4096*100, IPC_CREAT | 0777);
char* addr = shmat(idm, 0, 0);
int i;
struct sembuf sb;
sigset_t blocked;
struct sigaction sa;
sigfillset(&blocked);
sigdelset(&blocked, SIGCHLD);
memset(&sa, 0, sizeof(sa));
sa.sa_flags = SA_NOCLDSTOP;
sa.sa_handler = SIG_DFL;
sigaction(SIGCHLD, &sa, 0);
sigprocmask(SIG_BLOCK, &blocked, 0);
for (i = 0; i < 10; i++) {
pid_t pid = fork();
if (!pid) {
execl("/usr/bin/true", "true", NULL);
} else {
int status;
printf("%d\n", i);
sb.sem_num = 0;
sb.sem_op = 0;
sb.sem_flg = 0;
semop(ids, &sb, 1);
waitpid(pid, &status, 0);
sleep(1);
*addr = (char) i;
}
}
return 0;
}
$ gcc -Wall sem.c
$ ./a.exe
0
1
2
3
4
5
6
7
8
9
Windows event log immediately recorded 10 new events, like so:
Error 4/4/2014 10:02:34 PM cygserver 0 None
Error 4/4/2014 10:02:33 PM cygserver 0 None
Error 4/4/2014 10:02:32 PM cygserver 0 None
Error 4/4/2014 10:02:31 PM cygserver 0 None
Error 4/4/2014 10:02:30 PM cygserver 0 None
Error 4/4/2014 10:02:29 PM cygserver 0 None
Error 4/4/2014 10:02:28 PM cygserver 0 None
Error 4/4/2014 10:02:27 PM cygserver 0 None
Error 4/4/2014 10:02:26 PM cygserver 0 None
Error 4/4/2014 10:02:25 PM cygserver 0 None
(each having exactly the same message: cygserver: PID 1944: cygserver: error getting signal_arrived to server (6))
Strace is also attached.
Please let me know if you need anything else.
Anton Lavrentiev
Contractor NIH/NLM/NCBI