Closed JimLee1996 closed 1 year ago
gdb debug info
Starting program: /home/jim/src/router/xfrpc/build/xfrpc -c frpc.ini -f
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[6][Tue Jan 24 18:02:54 2023][3500368](control.c:653) connect server [frp.h1b.top:7000]...
[3][Tue Jan 24 18:02:54 2023][3500368](control.c:445) login success! login_len 67 len 76 ilen 0
[6][Tue Jan 24 18:02:54 2023][3500368](control.c:159) Start xfrp proxy services ...
Program received signal SIGSEGV, Segmentation fault.
0x000055555556a3c9 in incr_send_window (bev=0x0, tmux_hdr=0x555555581160 <tmux_hdr>, flags=4, stream=0x5555556996c0) at /home/jim/src/router/xfrpc/tcpmux.c:371
371 if (stream->send_window == 0) bufferevent_enable(bev, EV_READ);
@JimLee1996 It seems because bev object is already free. I thought I had already fixed this bug. In this case, in my opinion, there should be a check not only on whether stream is NULL or not, but also on bev.
I reproduce this bug by insert
printf("%p\n", stream);
printf("%d\n", stream->id); # segfault
between this two lines It seems to be relevant to stream pointing to an invalid address.
Also, it is better to check bev at the same time.
@JimLee1996 very good
Running on k2p padavan xfrpc: 2.1.606
config:
logs: