libevent使用 Segmentation fault??

c_tianzi 2015-10-08 05:16:11
最近在ubuntu上编译libevent,写了一个简单的服务端测试例子,客户端连接后总是产生以下错误:
Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
单步调试到bufferevent_enable就出现以上错误。


void accept_handle(evutil_socket_t sfd,short event, void *arg)
{
printf("accept handle\n");
struct event_base *base = (struct event_base*)arg;
struct sockaddr_in sin;
socklen_t slen = sizeof(sin);
evutil_socket_t fd = accept(sfd,(struct sockaddr*)&sin,&slen);
if(fd < 0)
{
printf("accept error");
return;
}

struct bufferevent* bev = bufferevent_socket_new(base,sfd,BEV_OPT_CLOSE_ON_FREE);
bufferevent_setcb(bev,read_cb,NULL,error_cb,arg);
bufferevent_enable(bev, EV_READ|EV_WRITE|EV_PERSIST); //到此处出现问题

// bufferevent_write(bev, MESSAGE, strlen(MESSAGE));
}

20分请教啊
...全文
656 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Errant_Xia 2016-06-23
  • 打赏
  • 举报
回复
struct event_base *base = (struct event_base*)arg; 应该是这个arg不对,再检查一下
赵4老师 2015-10-09
  • 打赏
  • 举报
回复
进程意外退出会在当前目录下产生‘core’文件或形如‘core.数字’的文件比如‘core.1234’ 使用命令 gdb 运行程序名 core或core.数字 进入gdb然后使用bt命令 可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。 如果进程意外退出不产生core文件,参考“ulimit -c core文件最大块大小”命令
c_tianzi 2015-10-08
  • 打赏
  • 举报
回复
顶啊,怎么没有回复
c_tianzi 2015-10-08
  • 打赏
  • 举报
回复
libevent版本:libevent-2.0.22-stable

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧