Hi!
If have this code:
Code:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
//#include <
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <pthread.h>
#include <errno.h>

#include "share/server.h"
#include "share/string.h"

int main (void)
{

/*if (fork () != -1)
	{*/
	int server;
	int client;
	struct sockaddr_in server_address;
	struct sockaddr_in client_address;
	pthread_t *pthread;
	unsigned short int pthreadc;
	socklen_t size;
	
	server = socket (PF_INET, SOCK_STREAM, 0);
	printf ("socket %d:%d\n", server, errno);
	
	server_address.sin_family = AF_INET;
	server_address.sin_addr.s_addr = INADDR_ANY;
	server_address.sin_port = htons (15000);
	
	printf ("Bind %d:%d\n",bind (server, (struct  sockaddr *) &server_address, sizeof (server_address)), errno);
	
	printf ("Listen %d:%d\n", listen (server, 5), errno);
	
	while (1)
		{
		size = sizeof (client_address);
		client = accept (server, (struct  sockaddr *) &client_address, &size);
		
		if (client > 0)
			{
			printf ("Client %d\n", client);
			
			if (pthread == NULL)
				{
				pthread = malloc (sizeof (pthread_t));
				}
			else
				{
				pthreadc++;
				pthread = realloc (pthread, sizeof (pthread_t) * (pthreadc + 1));
				}
			
			pthread_create ((pthread_t *) pthread [pthreadc], NULL, (void *) server_thread_go, &client);
			}
		else
			{
			printf ("Client2 %d: %d\n", client, errno);
			//close (server);
			}
			
		}
	pthread_exit (NULL);
	close (server);
	}
//}

int server_thread_go (void *client)
{
char depot [64];
char *data;
int value;

printf ("THREAD\n");

do
	{
	value = read ((int) client, &depot, 64);
	
	if (value > 0)
		{
		if (data == NULL)
			{
			data = malloc (sizeof (char) * (strlen (depot) + 1));
			}
		else
			{
			data = realloc (data, sizeof (char) * (strlen (data) + 1 + strlen (depot) + 1));
			}
		
		data = strcat (data, depot);
		}
	}
while (value > 0);

if (!strncmp ("help", strtolower (data), strlen ("help")))
	{
	}
else if (!strncmp ("activate", strtolower (data), strlen ("activate")))
	{
	
	}
else if (!strncmp ("deactivate", strtolower (data), strlen ("deactivate")))
	{
	}
else if (!strncmp ("authenticate", strtolower (data), strlen ("authenticate")))
	{
	}
else if (!strncmp ("replicate", strtolower (data), strlen ("replacte")))
	{
	}
else if (!strncmp ("modify", strtolower (data), strlen ("modify")))
	{
	}
else if (!strncmp ("move", strtolower (data), strlen ("move")))
	{
	}

return 0;
}
But if I run it I get segementation fault caused by pthread_create. Why?

thanks