多线程客户端/服务器

时间:2015-06-08 16:07:32

标签: c multithreading

编辑:[我已经做了一些线程特定的修改,但仍然得到相同的错误]请帮助

我正在编写一个多线程文件传输客户端/服务器作为赋值的一部分。如果客户端是单线程的,我的服务器工作正常并将文件发回。但是,一旦我启动多线程客户端,服务器就会崩溃。

一些实施逻辑 在服务器中有一个回调函数,只要请求登陆服务器就会调用它。它将请求上下文,文件路径和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

0 个答案:

没有答案