免费注册 查看新帖 |

Chinaunix

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

一个奇怪的core 大家帮忙看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-28 09:34 |只看该作者 |倒序浏览
bt得到的信息

#0  0x0049ddac in _IO_new_do_write () from /lib/tls/libc.so.6
#1  0x0049e8a8 in _IO_new_file_overflow () from /lib/tls/libc.so.6
#2  0x0049f52d in _IO_new_file_xsputn () from /lib/tls/libc.so.6
#3  0x0047ae6c in _IO_helper_overflow () from /lib/tls/libc.so.6
#4  0x004a004a in __overflow () from /lib/tls/libc.so.6

#5  0x0047ae86 in _IO_helper_overflow () from /lib/tls/libc.so.6
#6  0x004a004a in __overflow () from /lib/tls/libc.so.6
...

后面的然后就是#5,#6这2个循环,我看了到#10000还没完~~~

从程序日志来看 好像是core在写日志的地方。


会不会是这个用得有问题呢?


        va_list ap;
        va_start(ap, format);
        vsnprintf(message + n, BUFSIZ - n, format, ap);
        va_end(ap);

论坛徽章:
0
2 [报告]
发表于 2008-08-28 09:39 |只看该作者
这点信息,看不出问题啊。。。

论坛徽章:
0
3 [报告]
发表于 2008-08-28 10:55 |只看该作者
checkfd();

        time_t time_now;

        time(&time_now);

        char time_buf[128];
        memset(time_buf, 0, 12;

        struct tm *nowtime = localtime(&time_now);
        strftime(time_buf, 128, "[%F %T]", nowtime);


       
        char message[BUFSIZ];

        memset(message, 0, BUFSIZ);
        int n = snprintf(message, BUFSIZ, "%s ", time_buf);

        va_list ap;
        va_start(ap, format);
        vsnprintf(message + n, BUFSIZ - n, format, ap);
        va_end(ap);
       
        Lock();

        if (u_debug)
        {
                switch(type)
                {
                        case LDEBUG:
                                fprintf(stderr, "\033[40;36m%s\n\033[0m", message);
                                break;
                        case LIMPORT:
                                fprintf(stderr, "\033[40;32m%s\n\033[0m", message);
                                break;
                        case LERROR:
                                fprintf(stderr, "\033[40;33m%s\n\033[0m", message);
                                break;
                        case LSYS:
                                fprintf(stderr, "\033[40;31m%s\n\033[0m", message);
                                break;
                        default:
                                fprintf(stderr, "%s\n", message);
                                break;
                }
        }

        fprintf(logfile, "%s\n", message);
        fflush(logfile);
       
        UnLock();
       


上面那个是写日志的函数

Lock();
UnLock();
是加解锁;


checkfd(); 是检查文件是否存在
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP