yakkety ioquake3 SEGV in variable handling code
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ioquake3 (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
Problem exists in 1.36+u20160616+
It does not exist in 1.36+u20160122+
It's not specific to the sv_fps variable. Others will cause it too. sv_fps is merely a very early one to cause a crash.
It's a pointer to a structure. It goes from
value NULL,
to 0x5555561a1518
to 0x555500000015
to 0xffffffff00000015
to 0x100000015
and then crashes on deref later.
(gdb) watch sv_fps
Hardware watchpoint 1: sv_fps
(gdb) r
Starting program: ioquake3-
Hardware watchpoint 1: sv_fps
Old value = (cvar_t *) 0x0
New value = (cvar_t *) 0x5555561a1518 <cvar_indexes+2520>
SV_Init () at code/server/
673 sv_timeout = Cvar_Get ("sv_timeout", "200", CVAR_TEMP );
(gdb) disp sv_fps
1: sv_fps = (cvar_t *) 0x5555561a1518 <cvar_indexes+2520>
(gdb) c
Continuing.
Loading DLL file /usr/lib/
Loading DLL file: /usr/lib/
Sys_LoadGameDll
------- Game Initialization -------
gamename: baseoa
gamedate: Jun 27 2016
tty]
Thread 1 "ioquake3" hit Hardware watchpoint 1: sv_fps
Old value = (cvar_t *) 0x5555561a1518 <cvar_indexes+2520>
New value = (cvar_t *) 0x555500000015
Cvar_Register (vmCvar=
1346 vmCvar-
1: sv_fps = (cvar_t *) 0x555500000015
(gdb) n
Thread 1 "ioquake3" hit Hardware watchpoint 1: sv_fps
Old value = (cvar_t *) 0x555500000015
New value = (cvar_t *) 0xffffffff00000015
Cvar_Register (vmCvar=
1347 Cvar_Update( vmCvar );
1: sv_fps = (cvar_t *) 0xffffffff00000015
(gdb) n
Thread 1 "ioquake3" hit Hardware watchpoint 1: sv_fps
Old value = (cvar_t *) 0xffffffff00000015
New value = (cvar_t *) 0x100000015
Cvar_Update (vmCvar=
1375 if ( strlen(
1: sv_fps = (cvar_t *) 0x100000015
(gdb) c
Continuing.
Thread 1 "ioquake3" received signal SIGSEGV, Segmentation fault.
0x00005555555d23ce in SV_Frame (msec=11) at code/server/
1082 if ( sv_fps->integer < 1 ) {
1: sv_fps = (cvar_t *) 0x100000015
Changed in ioquake3 (Ubuntu): | |
status: | New → Confirmed |