编辑:[我已经做了一些线程特定的修改,但仍然得到相同的错误]请帮助
我正在编写一个多线程文件传输客户端/服务器作为赋值的一部分。如果客户端是单线程的,我的服务器工作正常并将文件发回。但是,一旦我启动多线程客户端,服务器就会崩溃。
一些实施逻辑 在服务器中有一个回调函数,只要请求登陆服务器就会调用它。它将请求上下文,文件路径和void *参数作为参数。我将此请求捆绑到一个结构(路径和上下文)中并插入队列中。线程将这些请求从工作函数中取列,并将它们提供给客户端。
以下是相关代码:
的main.c
#include <errno.h>
#include <getopt.h>
#include <signal.h>
#include <strings.h>
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
#include <pthread.h>
#include "gfserver.h"
#include "content.h"
#define USAGE \
"usage:\n" \
" webproxy [options]\n" \
"options:\n" \
" -p Listen port (Default: 8888)\n" \
" -t Number of threads (default:1)" \
" -c Content file mapping keys to content files\n" \
" -h Show this help message\n"
//extern ssize_t handler_get(gfcontext_t *ctx, char *path, void* arg);
extern ssize_t enqueueContext(gfcontext_t *ctx, char *path, void* arg);
extern void initThreads(int n_thread);
extern void destroyThreads();
/* Main ========================================================= */
int main(int argc, char **argv) {
int option_char = 0;
unsigned short port = 8888;
int num_threads = 1;
char *content = "content.txt";
gfserver_t *gfs;
// Parse and set command line arguments
while ((option_char = getopt(argc, argv, "p:t:c:h")) != -1) {
switch (option_char) {
case 'p': // listen-port
port = atoi(optarg);
break;
case 't':
num_threads = atoi(optarg);
break;
case 'c': // file-path
content = optarg;
break;
case 'h': // help
fprintf(stdout, "%s", USAGE);
exit(0);
break;
default:
fprintf(stderr, "%s", USAGE);
exit(1);
}
}
/*allocate memory for the contexts*/
content_init(content);
/*Initializing server*/
gfs = gfserver_create();
/*Setting options*/
gfserver_set_port(gfs, port);
gfserver_set_maxpending(gfs, 100);
gfserver_set_handler(gfs, enqueueContext);
gfserver_set_handlerarg(gfs, NULL);
initThreads(num_threads);
/*Loops forever*/
gfserver_serve(gfs);
destroyThreads();
}
handler.c
#include <stdlib.h>
#include <fcntl.h>
#include <curl/curl.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <pthread.h>
#include "gfserver.h"
#include "content.h"
#define BUFFER_SIZE 4096
#define MAX_QUEUE 500
struct context_handler{
gfcontext_t *hctx;
char hpath[512];
};
typedef struct context_handler context_handler;
/*Queue implementation starts here*/
context_handler *queue_array[MAX_QUEUE];
pthread_mutex_t mutexrear;
pthread_mutex_t mutexfront;
pthread_mutex_t mutexcontext;
pthread_mutex_t empty_mutex;
pthread_cond_t empty_mutex_cv;
int rear = - 1;
int front = - 1;
int req_count = 0;
int empty();
int isEmpty()
{
int rv;
rv = empty();
return rv;
}
int empty()
{
if (front == - 1 || front > rear){
return 1;
}
else{
return 0;
}
}
void enqueue(context_handler *item)
{
if (rear == MAX_QUEUE - 1)
printf("Queue Overflow \n");
else
{
if (front == - 1)
{
front = 0;
}
rear = rear + 1;
// req_count++;
queue_array[rear] = item;
// printf("Enqueued.\n");
}
} /*End of insert()*/
context_handler * dequeue()
{
context_handler *ch;
if (front == - 1 || front > rear)
{
printf("Queue Underflow \n");
return NULL;
}
else
{
ch = queue_array[front];
front++;
front %= MAX_QUEUE;
// req_count--;
return ch;
}
}
/*Queue implementation ends here*/
int total_threads=0;
int active_threads=0;
context_handler *ch=NULL;
void *handler_get(void *hp);
void initThreads(int n_threads)
{
total_threads = n_threads;
pthread_t threads[total_threads];
pthread_mutex_init(&mutexrear, NULL);
pthread_mutex_init(&mutexfront, NULL);
pthread_mutex_init(&mutexfront, NULL);
pthread_cond_init (&empty_mutex_cv, NULL);
int rc;
long t;
for(t=0; t<total_threads; t++){
printf("In connection handler: creating thread %ld\n", t);
rc = pthread_create(&threads[t], NULL, handler_get, (void *)&t);
if (rc){
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
}
void destroyThreads()
{
pthread_mutex_destroy(&mutexrear);
pthread_mutex_destroy(&mutexfront);
pthread_mutex_destroy(&mutexcontext);
pthread_cond_destroy(&empty_mutex_cv);
pthread_exit(NULL);
}
ssize_t enqueueContext(gfcontext_t *ctx, char *path, void* arg)
{
context_handler ch;
ch.hctx = ctx;
strcpy(ch.hpath, path);
pthread_mutex_lock(&mutexfront);
enqueue(&ch);
pthread_cond_signal(&empty_mutex_cv);
pthread_mutex_unlock(&mutexfront);
return 0;
}
void *handler_get(void *thread_id){
long tid;
tid = (long) thread_id;
while(1)
{
pthread_mutex_lock(&mutexcontext);
while(isEmpty())
pthread_cond_wait(&empty_mutex_cv, &mutexcontext);
context_handler *ch = dequeue();
pthread_mutex_unlock(&mutexcontext);
char *path = ch->hpath;
gfcontext_t *ctx= ch->hctx;
printf("Path: %s ThreadID:%ld\n", path, tid);
int fildes;
size_t file_len, bytes_transferred;
ssize_t read_len, write_len;
char buffer[BUFFER_SIZE];
if( 0 > (fildes = content_get(path)))
return gfs_sendheader(ctx, GF_FILE_NOT_FOUND, 0);
/* Calculating the file size */
file_len = lseek(fildes, 0, SEEK_END);
gfs_sendheader(ctx, GF_OK, file_len);
/* Sending the file contents chunk by chunk. */
bytes_transferred = 0;
while(bytes_transferred < file_len){
read_len = pread(fildes, buffer, BUFFER_SIZE, bytes_transferred);
if (read_len <= 0){
fprintf(stderr, "handle_with_file read error, %zd, %zu, %zu", read_len, bytes_transferred, file_len );
gfs_abort(ctx);
return -1;
}
write_len = gfs_send(ctx, buffer, read_len);
if (write_len != read_len){
fprintf(stderr, "handle_with_file write error");
gfs_abort(ctx);
return -1;
}
bytes_transferred += write_len;
}
// return (void *)bytes_transferred;
}
}
日志
The server process seems to have crashed.
The server exited with returncode --6
The client exited with returncode --6
*****
client output:
recv: connection reset
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa4000008c0 ***
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa41c0008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa4080008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa4140008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa4040008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa3f40008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa3f80008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa4100008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa3f00008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa3e40008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa3fc0008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa40c0008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa3e80008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa3ec0008c0 ***
recv: connection reset
*** glibc detected *** ./gfclient_download: double free or corruption (out): 0x00007fa4180008c0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7de16)[0x7fa42a570e16]
/lib/x86_64-linux-gnu/libc.so.6(fclose+0x155)[0x7fa42a560a95]
./gfclient_download[0x4022b0]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a)[0x7fa42a8b9e9a]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fa42a5e68bd]
======= Memory map: ========
00400000-00404000 r-xp 00000000 00:13 737624 /tmp/vmuser_tmgdmwtnqr/gfclient_download
00603000-00604000 r--p 00003000 00:13 737624 /tmp/vmuser_tmgdmwtnqr/gfclient_download
00604000-00605000 rw-p 00004000 00:13 737624 /tmp/vmuser_tmgdmwtnqr/gfclient_download
01293000-012b4000 rw-p 00000000 00:00 0 [heap]
7fa3e4000000-7fa3e4021000 rw-p 00000000 00:00 0
7fa3e4021000-7fa3e8000000 ---p 00000000 00:00 0
7fa3e8000000-7fa3e8021000 rw-p 00000000 00:00 0
7fa3e8021000-7fa3ec000000 ---p 00000000 00:00 0
7fa3ec000000-7fa3ec021000 rw-p 00000000 00:00 0
7fa3ec021000-7fa3f0000000 ---p 00000000 00:00 0
7fa3f0000000-7fa3f0021000 rw-p 00000000 00:00 0
7fa3f0021000-7fa3f4000000 ---p 00000000 00:00 0
7fa3f4000000-7fa3f4021000 rw-p 00000000 00:00 0
7fa3f4021000-7fa3f8000000 ---p 00000000 00:00 0
7fa3f8000000-7fa3f8021000 rw-p 00000000 00:00 0
7fa3f8021000-7fa3fc000000 ---p 00000000 00:00 0
7fa3fc000000-7fa3fc021000 rw-p 00000000 00:00 0
7fa3fc021000-7fa400000000 ---p 00000000 00:00 0
7fa400000000-7fa400021000 rw-p 00000000 00:00 0
7fa400021000-7fa404000000 ---p 00000000 00:00 0
7fa404000000-7fa404021000 rw-p 00000000 00:00 0
7fa404021000-7fa408000000 ---p 00000000 00:00 0
7fa408000000-7fa408021000 rw-p 00000000 00:00 0
7fa408021000-7fa40c000000 ---p 00000000 00:00 0
7fa40c000000-7fa40c021000 rw-p 00000000 00:00 0
7fa40c021000-7fa410000000 ---p 00000000 00:00 0
7fa410000000-7fa410021000 rw-p 00000000 00:00 0
7fa410021000-7fa414000000 ---p 00000000 00:00 0
7fa414000000-7fa414021000 rw-p 00000000 00:00 0
7fa414021000-7fa418000000 ---p 00000000 00:00 0
7fa418000000-7fa418021000 rw-p 00000000 00:00 0
7fa418021000-7fa41c000000 ---p 00000000 00:00 0
7fa41c000000-7fa41c021000 rw-p 00000000 00:00 0
7fa41c021000-7fa420000000 ---p 00000000 00:00 0
7fa4220c0000-7fa4220d5000 r-xp 00000000 ca:01 395315 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fa4220d5000-7fa4222d4000 ---p 00015000 ca:01 395315 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fa4222d4000-7fa4222d5000 r--p 00014000 ca:01 395315 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fa4222d5000-7fa4222d6000 rw-p 00015000 ca:01 395315 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fa4222d6000-7fa4222e2000 r-xp 00000000 ca:01 400512 /lib/x86_64-linux-gnu/libnss_files-2.15.so
7fa4222e2000-7fa4224e1000 ---p 0000c000 ca:01 400512 /lib/x86_64-linux-gnu/libnss_files-2.15.so
7fa4224e1000-7fa4224e2000 r--p 0000b000 ca:01 400512 /lib/x86_64-linux-gnu/libnss_files-2.15.so
7fa4224e2000-7fa4224e3000 rw-p 0000c000 ca:01 400512 /lib/x86_64-linux-gnu/libnss_files-2.15.so
7fa4224e3000-7fa4224e4000 ---p 00000000 00:00 0
7fa4224e4000-7fa422ce4000 rw-p 00000000 00:00 0
7fa422ce4000-7fa422ce5000 ---p 00000000 00:00 0
7fa422ce5000-7fa4234e5000 rw-p 00000000 00:00 0
7fa4234e5000-7fa4234e6000 ---p 00000000 00:00 0
7fa4234e6000-7fa423ce6000 rw-p 00000000 00:00 0
7fa423ce6000-7fa423ce7000 ---p 00000000 00:00 0
7fa423ce7000-7fa4244e7000 rw-p 00000000 00:00 0
7fa4244e7000-7fa4244e8000 ---p 00000000 00:00 0
7fa4244e8000-7fa424ce8000 rw-p 00000000 00:00 0
7fa424ce8000-7fa424ce9000 ---p 00000000 00:00 0
7fa424ce9000-7fa4254e9000 rw-p 00000000 00:00 0
7fa4254e9000-7fa4254ea000 ---p 00000000 00:00 0
7fa4254ea000-7fa425cea000 rw-p 00000000 00:00 0
7fa425cea000-7fa425ceb000 ---p 00000000 00:00 0
7fa425ceb000-7fa4264eb000 rw-p 00000000 00:00 0
7fa4264eb000-7fa4264ec000 ---p 00000000 00:00 0
7fa4264ec000-7fa426cec000 rw-p 00000000 00:00 0
7fa426cec000-7fa426ced000 ---p 00000000 00:00 0
7fa426ced000-7fa4274ed000 rw-p 00000000 00:00 0
7fa4274ed000-7fa4274ee000 ---p 00000000 00:00 0
7fa4274ee000-7fa427cee000 rw-p 00000000 00:00 0
7fa427cee000-7fa427cef000 ---p 00000000 00:00 0
7fa427cef000-7fa4284ef000 rw-p 00000000 00:00 0
7fa4284ef000-7fa4284f0000 ---p 00000000 00:00 0
7fa4284f0000-7fa428cf0000 rw-p 00000000 00:00 0
7fa428cf0000-7fa428cf1000 ---p 00000000 00:00 0
7fa428cf1000-7fa4294f1000 rw-p 00000000 00:00 0
7fa4294f1000-7fa4294f2000 ---p 00000000 00:00 0
7fa4294f2000-7fa429cf2000 rw-p 00000000 00:00 0
7fa429cf2000-7fa429cf3000 ---p 00000000 00:00 0
7fa429cf3000-7fa42a4f3000 rw-p 00000000 00:00 0
7fa42a4f3000-7fa42a6a7000 r-xp 00000000 ca:01 400509 /lib/x86_64-linux-gnu/libc-2.15.so
7fa42a6a7000-7fa42a8a7000 ---p 001b4000 ca:01 400509 /lib/x86_64-linux-gnu/libc-2.15.so
7fa42a8a7000-7fa42a8ab000 r--p 001b4000 ca:01 400509 /lib/x86_64-linux-gnu/libc-2.15.so
7fa42a8ab000-7fa42a8ad000 rw-p 001b8000 ca:01 400509 /lib/x86_64-linux-gnu/libc-2.15.so
7fa42a8ad000-7fa42a8b2000 rw-p 00000000 00:00 0
7fa42a8b2000-7fa42a8ca000 r-xp 00000000 ca:01 400510 /lib/x86_64-linux-gnu/libpthread-2.15.so
7fa42a8ca000-7fa42aac9000 ---p 00018000 ca:01 400510 /lib/x86_64-linux-gnu/libpthread-2.15.so
7fa42aac9000-7fa42aaca000 r--p 00017000 ca:01 400510 /lib/x86_64-linux-gnu/libpthread-2.15.so
7fa42aaca000-7fa42aacb000 rw-p 00018000 ca:01 400510 /lib/x86_64-linux-gnu/libpthread-2.15.so
7fa42aacb000-7fa42aacf000 rw-p 00000000 00:00 0
7fa42aacf000-7fa42aaf1000 r-xp 00000000 ca:01 400518 /lib/x86_64-linux-gnu/ld-2.15.so
7fa42acdb000-7fa42acde000 rw-p 00000000 00:00 0
7fa42acec000-7fa42aced000 rw-p 00000000 00:00 0
7fa42acee000-7fa42acf1000 rw-p 00000000 00:00 0
7fa42acf1000-7fa42acf2000 r--p 00022000 ca:01 400518 /lib/x86_64-linux-gnu/ld-2.15.so
7fa42acf2000-7fa42acf4000 rw-p 00023000 ca:01 400518 /lib/x86_64-linux-gnu/ld-2.15.so
7fff7de8a000-7fff7deab000 rw-p 00000000 00:00 0 [stack]
7fff7ded4000-7fff7ded5000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
gfc_perform returned an error -4
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7de16)[0x7fa42a570e16]
/lib/x86_64-linux-gnu/libc.so.6(fclose+0x155)[0x7fa42a560a95]
./gfclient_download[0x4022b0]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a)[0x7fa42a8b9e9a]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fa42a5e68bd]
======= Memory map: ========
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7de16)[0x7fa42a570e16]
/lib/x86_64-linux-gnu/libc.so.6(fclose+0x155)[0x7fa42a560a95]
./gfclient_download[0x4022b0]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a)[0x7fa42a8b9e9a]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fa42a5e68bd]
======= Memory map: ========
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7de16)[0x7fa42a570e16]
/lib/x86_64-linux-gnu/libc.so.6(fclose+0x155)[0x7fa42a560a95]
./gfclient_download[0x4022b0]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a)[0x7fa42a8b9e9a]
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fa42a5e68bd]
======= Memory map: ========
======= Backtrace: =========
======= Backtrace: =========
.6(+0x7de16)[0x7fa42a570e16]
*****
server output:
listening locally for connections on port 8888
_close:: Connection reset by peer
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
*** glibc detected *** ./bvtgfserver_main: double free or corruption (top): 0x00000000024281f0 ***
_gf_send: Bad file descriptor
gfs_send failed
handle_with_file write error======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7de16)[0x7f5fa5146e16]
./bvtgfserver_main[0x401902]
./bvtgfserver_main[0x402268]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a)[0x7f5fa548fe9a]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7f5fa51bc8bd]
======= Memory map: ========
00400000-00404000 r-xp 00000000 00:13 738305 /tmp/vmuser_tmgdmwtnqr/bvtgfserver_main
00604000-00605000 r--p 00004000 00:13 738305 /tmp/vmuser_tmgdmwtnqr/bvtgfserver_main
00605000-00606000 rw-p 00005000 00:13 738305 /tmp/vmuser_tmgdmwtnqr/bvtgfserver_main
00606000-00607000 rw-p 00000000 00:00 0
02423000-02445000 rw-p 00000000 00:00 0 [heap]
7f5f98000000-7f5f98021000 rw-p 00000000 00:00 0
7f5f98021000-7f5f9c000000 ---p 00000000 00:00 0
7f5f9cea2000-7f5f9ceb7000 r-xp 00000000 ca:01 395315 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f5f9ceb7000-7f5f9d0b6000 ---p 00015000 ca:01 395315 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f5f9d0b6000-7f5f9d0b7000 r--p 00014000 ca:01 395315 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f5f9d0b7000-7f5f9d0b8000 rw-p 00015000 ca:01 395315 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f5f9d0b8000-7f5f9d0b9000 rw-p 00000000 00:00 0
7f5f9d0b9000-7f5f9d0ba000 ---p 00000000 00:00 0
7f5f9d0ba000-7f5f9d8ba000 rw-p 00000000 00:00 0
7f5f9d8ba000-7f5f9d8bb000 ---p 00000000 00:00 0
7f5f9d8bb000-7f5f9e0bb000 rw-p 00000000 00:00 0
7f5f9e0bb000-7f5f9e0bc000 ---p 00000000 00:00 0
7f5f9e0bc000-7f5f9e8bc000 rw-p 00000000 00:00 0
7f5f9e8bc000-7f5f9e8bd000 ---p 00000000 00:00 0
7f5f9e8bd000-7f5f9f0bd000 rw-p 00000000 00:00 0
7f5f9f0bd000-7f5f9f0be000 ---p 00000000 00:00 0
7f5f9f0be000-7f5f9f8be000 rw-p 00000000 00:00 0
7f5f9f8be000-7f5f9f8bf000 ---p 00000000 00:00 0
7f5f9f8bf000-7f5fa00bf000 rw-p 00000000 00:00 0
7f5fa00bf000-7f5fa00c0000 ---p 00000000 00:00 0
7f5fa00c0000-7f5fa08c0000 rw-p 00000000 00:00 0
7f5fa08c0000-7f5fa08c1000 ---p 00000000 00:00 0
7f5fa08c1000-7f5fa10c1000 rw-p 00000000 00:00 0
7f5fa10c1000-7f5fa10c2000 ---p 00000000 00:00 0
7f5fa10c2000-7f5fa18c2000 rw-p 00000000 00:00 0
7f5fa18c2000-7f5fa18c3000 ---p 00000000 00:00 0
7f5fa18c3000-7f5fa20c3000 rw-p 00000000 00:00 0
7f5fa20c3000-7f5fa20c4000 ---p 00000000 00:00 0
7f5fa20c4000-7f5fa28c4000 rw-p 00000000 00:00 0
7f5fa28c4000-7f5fa28c5000 ---p 00000000 00:00 0
7f5fa28c5000-7f5fa30c5000 rw-p 00000000 00:00 0
7f5fa30c5000-7f5fa30c6000 ---p 00000000 00:00 0
7f5fa30c6000-7f5fa38c6000 rw-p 00000000 00:00 0
7f5fa38c6000-7f5fa38c7000 ---p 00000000 00:00 0
7f5fa38c7000-7f5fa40c7000 rw-p 00000000 00:00 0
7f5fa40c7000-7f5fa40c8000 ---p 00000000 00:00 0
7f5fa40c8000-7f5fa48c8000 rw-p 00000000 00:00 0
7f5fa48c8000-7f5fa48c9000 ---p 00000000 00:00 0
7f5fa48c9000-7f5fa50c9000 rw-p 00000000 00:00 0
7f5fa50c9000-7f5fa527d000 r-xp 00000000 ca:01 400509 /lib/x86_64-linux-gnu/libc-2.15.so
7f5fa527d000-7f5fa547d000 ---p 001b4000 ca:01 400509 /lib/x86_64-linux-gnu/libc-2.15.so
7f5fa547d000-7f5fa5481000 r--p 001b4000 ca:01 400509 /lib/x86_64-linux-gnu/libc-2.15.so
7f5fa5481000-7f5fa5483000 rw-p 001b8000 ca:01 400509 /lib/x86_64-linux-gnu/libc-2.15.so
7f5fa5483000-7f5fa5488000 rw-p 00000000 00:00 0
7f5fa5488000-7f5fa54a0000 r-xp 00000000 ca:01 400510 /lib/x86_64-linux-gnu/libpthread-2.15.so
7f5fa54a0000-7f5fa569f000 ---p 00018000 ca:01 400510 /lib/x86_64-linux-gnu/libpthread-2.15.so
7f5fa569f000-7f5fa56a0000 r--p 00017000 ca:01 400510 /lib/x86_64-linux-gnu/libpthread-2.15.so
7f5fa56a0000-7f5fa56a1000 rw-p 00018000 ca:01 400510 /lib/x86_64-linux-gnu/libpthread-2.15.so
7f5fa56a1000-7f5fa56a5000 rw-p 00000000 00:00 0
7f5fa56a5000-7f5fa56c7000 r-xp 00000000 ca:01 400518 /lib/x86_64-linux-gnu/ld-2.15.so
7f5fa58b1000-7f5fa58b5000 rw-p 00000000 00:00 0
7f5fa58b5000-7f5fa58c7000 rw-p 00000000 00:00 0
7f5fa58c7000-7f5fa58c8000 r--p 00022000 ca:01 400518 /lib/x86_64-linux-gnu/ld-2.15.so
7f5fa58c8000-7f5fa58ca000 rw-p 00023000 ca:01 400518 /lib/x86_64-linux-gnu/ld-2.15.so
7fff631e2000-7fff63203000 rw-p 00000000 00:00 0 [stack]
7fff6321b000-7fff6321c000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
In connection handler: creating thread 0
In connection handler: creating thread 1
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 2
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 3
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 4
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 5
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 6
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 7
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 8
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 9
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 10
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 11
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 12
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 13
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 14
Queue Underflow
Enqueued Items: 0
In connection handler: creating thread 15
Queue Underflow
Enqueued Items: 0
Queue Underflow
Enqueued Items: 0
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Enqueued.
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816
Path: /junk/file000.txt ThreadID:140734856436816