免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4862 | 回复: 8
打印 上一主题 下一主题

线程退出异常错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-09 13:17 |只看该作者 |倒序浏览
线程退出异常错误

我的线程
//**************************************************************
//接收线程
//**************************************************************
void *ServTcp(void *p)
{
        int myfd,ret;
        myfd = (int)p;
        int nBuff;
        char szBuffer[MAX_NETBUF],szBuf[8192];
        char *psz;
       
        //脱离主线程
        pthread_detach(pthread_self());
        nBuff = 0;
        while(g_nRun == 1) //g_nRun = 1,run.g_nRun=-1,exit
        {
                ret = recv(myfd, szBuffer, MAX_NETBUF,0);
                if (ret == -1)
                {
                        perror("recv");
                        CloseSock(myfd);
                        pthread_exit(NULL);
                        return NULL;
                }
                szBuffer[ret] = '\0';

                //对接收的数据进行缓存处理
                strcpy(&szBuf[nBuff], szBuffer);
            psz = MsgRec(szBuf,myfd);
                if (psz)
                {
                        nBuff = strlen(psz);
                        memcpy(szBuf, psz, nBuff);
                        szBuf[nBuff] = '\0';
                }
                else
                {
                        nBuff = 0;
                        //清空该块内存
                        memset(szBuf,0, sizeof(szBuf));
                }
        }

        printf("exit:ServTcp:[ %x ]\n",myfd);
        CloseSock(myfd);
    pthread_exit(NULL);
        return NULL;
}


*** glibc detected *** ./kserver: free(): invalid next size (fast): 0x0863d9d0 ***
======= Backtrace: =========
/lib/libc.so.6[0x639efd]
/lib/libc.so.6(cfree+0x90)[0x63d550]
/lib/libc.so.6[0x5f8780]
/lib/libc.so.6[0x5f7ff2]
/lib/libc.so.6(dcgettext+0x43)[0x5f7123]
/lib/libc.so.6(__strerror_r+0x119)[0x640299]
/lib/libc.so.6(perror+0x14d)[0x62718d]
./kserver[0x804f299]
/lib/libpthread.so.0[0x7473db]
/lib/libc.so.6(clone+0x5e)[0x6a106e]
======= Memory map: ========
002fd000-00308000 r-xp 00000000 fd:00 1640967    /lib/libgcc_s-4.1.1-20061011.so.1
00308000-00309000 rwxp 0000a000 fd:00 1640967    /lib/libgcc_s-4.1.1-20061011.so.1
005b7000-005d0000 r-xp 00000000 fd:00 1640964    /lib/ld-2.5.so
005d0000-005d1000 r-xp 00018000 fd:00 1640964    /lib/ld-2.5.so
005d1000-005d2000 rwxp 00019000 fd:00 1640964    /lib/ld-2.5.so
005d4000-0070b000 r-xp 00000000 fd:00 1640965    /lib/libc-2.5.so
0070b000-0070d000 r-xp 00137000 fd:00 1640965    /lib/libc-2.5.so
0070d000-0070e000 rwxp 00139000 fd:00 1640965    /lib/libc-2.5.so
0070e000-00711000 rwxp 0070e000 00:00 0
00742000-00755000 r-xp 00000000 fd:00 1640968    /lib/libpthread-2.5.so
00755000-00756000 r-xp 00012000 fd:00 1640968    /lib/libpthread-2.5.so
00756000-00757000 rwxp 00013000 fd:00 1640968    /lib/libpthread-2.5.so
00757000-00759000 rwxp 00757000 00:00 0
00b26000-00b27000 r-xp 00b26000 00:00 0          [vdso]
08048000-08055000 r-xp 00000000 03:06 425988     /home/share/server/src/K3S/kserver
08055000-08056000 rw-p 0000c000 03:06 425988     /home/share/server/src/K3S/kserver
08056000-0805c000 rw-p 08056000 00:00 0
0863d000-086a0000 rw-p 0863d000 00:00 0
b5300000-b5321000 rw-p b5300000 00:00 0
b5321000-b5400000 ---p b5321000 00:00 0
b54bf000-b54d1000 r--p 00000000 fd:00 1021988    /usr/share/locale/zh_CN/LC_MESSAGES/libc.mo
b54d1000-b54d2000 rw-p b54d1000 00:00 0
b54d2000-b54d3000 ---p b54d2000 00:00 0
b54d3000-b5ed3000 rw-p b54d3000 00:00 0
b5ed3000-b5ed4000 ---p b5ed3000 00:00 0
b5ed4000-b68d4000 rw-p b5ed4000 00:00 0
b68d4000-b68d5000 ---p b68d4000 00:00 0
b68d5000-b72d5000 rw-p b68d5000 00:00 0
b72d5000-b72d6000 ---p b72d5000 00:00 0
b72d6000-b7cd7000 rw-p b72d6000 00:00 0
b7cd7000-b7cd8000 r--p 00d28000 fd:00 1022366    /usr/lib/locale/locale-archive
b7cd8000-b7d14000 r--p 00cea000 fd:00 1022366    /usr/lib/locale/locale-archive
b7d14000-b7f14000 r--p 00000000 fd:00 1022366    /usr/lib/locale/locale-archive
b7f14000-b7f15000 rw-p b7f14000 00:00 0
b7f1e000-b7f20000 rw-p b7f1e000 00:00 0
bfce2000-bfda4000 rw-p bfce2000 00:00 0          [stack]
已放弃


我的分机连接一会在断开就会出错。
但是如果是刚刚连接时间不是很久就断开就没是,很奇怪。

论坛徽章:
0
2 [报告]
发表于 2007-01-09 18:41 |只看该作者
顶上去,
没人可以关注一下吗?

论坛徽章:
0
3 [报告]
发表于 2007-01-10 09:21 |只看该作者
怎么会没人关注呢,是你提供的信息太少
至少你要用gdb分析一下core文件,看看提示信息
从你贴的信息来看,是内存管理的问题,你最好把整个程序都贴出来

不过,从来没有莫名其妙的问题....仔细排查吧


原帖由 newsoil 于 2007-1-9 18:41 发表
顶上去,
没人可以关注一下吗?

论坛徽章:
0
4 [报告]
发表于 2007-01-18 15:33 |只看该作者

关注~

我也遇到相似的情况,我的是子线程运行到pthread_detach()那句后就跳回主程序,然后退出了,不知道哪里出了问题,有人给解答下吗?

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
5 [报告]
发表于 2007-01-18 16:15 |只看该作者
strcpy(&szBuf[nBuff], szBuffer);
这句中的nBuff是干什么的.

论坛徽章:
0
6 [报告]
发表于 2007-01-18 18:38 |只看该作者
是szBuf的长度

论坛徽章:
0
7 [报告]
发表于 2007-01-18 19:00 |只看该作者
什么平台,是不是字节对齐的问题?

论坛徽章:
0
8 [报告]
发表于 2007-01-18 22:53 |只看该作者
用gdb试试吧,如果不行那就只有自己手动printf了

论坛徽章:
0
9 [报告]
发表于 2007-01-18 22:57 |只看该作者
====

楼主的程序好乱啊,请把要求说一下,我看看能不能改写。

====
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP