[255] in Pthreads mailing list archive
accept on FreeBSD 2.1
daemon@ATHENA.MIT.EDU ("John H. Aughey")
Tue Feb 6 21:57:10 1996
To: pthreads@MIT.EDU
Date: Tue, 06 Feb 1996 21:34:05 -0500
From: jha@cs.purdue.edu ("John H. Aughey")
accept() causes pthreads under FreeBSD to PANIC. Here's a simple
program which causes the PANIC.
#include <stdio.h>
#ifdef PTHREAD
#include <pthread.h>
#endif
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#define PORT 4096
int main()
{
int sockfd, fd,len;
struct sockaddr_in addr;
sockfd=socket(AF_INET,SOCK_STREAM,0);
bzero((char *) &addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(PORT);
bind(sockfd,(struct sockaddr *) &addr, sizeof(addr));
listen(sockfd,5);
len=sizeof(addr);
fd=accept(sockfd,(struct sockaddr *)&addr,&len);
printf("connect from %s\n",inet_ntoa(addr.sin_addr));
close(fd);
close(sockfd);
}
The backtrace shows the following:
Starting program: /home/jha/src/ipfunnel/a.out
Program received signal SIGABRT, Aborted.
0x808aee5 in kill ()
(gdb) bt
#0 0x808aee5 in kill ()
#1 0x808a87c in abort ()
#2 0x7a8e in fd_kern_poll ()
at /scsi0/pthreads/src/pthreads-1_60_beta4_1/pthreads/fd_kern.c:135
#3 0x6b1f in context_switch ()
at /scsi0/pthreads/src/pthreads-1_60_beta4_1/pthreads/signal.c:111
#4 0x6ebc in sig_handler (sig=26)
at /scsi0/pthreads/src/pthreads-1_60_beta4_1/pthreads/signal.c:292
#5 0x7240 in pthread_resched_resume (state=PS_FDR_WAIT)
at /scsi0/pthreads/src/pthreads-1_60_beta4_1/pthreads/signal.c:519
#6 0x939f in accept (fd=3, name=0x36bb8, namelen=0x36bc8)
at /scsi0/pthreads/src/pthreads-1_60_beta4_1/pthreads/fd_kern.c:1162
#7 0x16b5 in func ()
#8 0xe7da in machdep_pthread_start ()
at /p/pthreads/src/pthreads-1_60_beta4_1/machdep.c:131
This code works correctly on a sun4-sos4 machine.
-John