Forums » Bugs
IUP segfault
I get this a lot on logoff or ReloadInterface()
Errors.log:
sigsegv_trap
caught SIGABRT; generating stack trace
fault address 0x3e80000425d, c35ed080, fffffffa
cr2 0x0000000000000000 0
oldmask 0x0000000000000000 0
trapno 0x0000000000000000 0
err 0x0000000000000000 0
csgsfs 0x0000000000000033 51
efl 0x0000000000000202 514
rip 0x00007f7877737475 140155376858229
rsp 0x00007fff4db620b8 140734497169592
rcx 0xffffffffffffffff -1
rax 0x0000000000000000 0
rdx 0x0000000000000006 6
rbx 0x00007fff4db67c1d 140734497192989
rbp 0x00007f787784fc71 140155378007153
rsi 0x000000000000425d 16989
rdi 0x000000000000425d 16989
r15 0x000000000000011d 285
r14 0x00007f787784fc71 140155378007153
r13 0x00000000006561c7 6644167
r12 0x0000000000656227 6644263
r11 0x0000000000000202 514
r10 0x0000000000000008 8
r9 0x6e6f697472657373 7957695015443329907
r8 0x00007f7878fe8720 140155402749728
brk> 00007f7877737475: 0a73257325732573 4157004f464e4900 524500474e494e52 544c414800524f52
x:257325732500203a
caught SIGSEGV; generating stack trace
fault address (nil), 77753c8c, 00000080
cr2 0x0000000000000000 0
oldmask 0x0000000000000020 32
trapno 0x000000000000000d 13
err 0x0000000000000000 0
csgsfs 0x0000000000000033 51
efl 0x0000000000010246 66118
rip 0x00000000005c4d80 6049152
rsp 0x00007fff4db61bb0 140734497168304
rcx 0x00007f78777d3b0d 140155377498893
rax 0x0000000000000000 0
rdx 0x2573257325732573 2698541778204829043
rbx 0x00007f787784fc71 140155378007153
rbp 0x000000000d4d0280 223150720
rsi 0x0000000000000000 0
rdi 0x257325732500203a 2698541778197291066
r15 0x00007f787784fc71 140155378007153
r14 0x00007f7877737475 140155376858229
r13 0x00007fff4db61c40 140734497168448
r12 0x000000000000000a 10
r11 0x0000000000000001 1
r10 0x0000000000000000 0
r9 0x00000000ffffffff 4294967295
r8 0x00007f7878fe8720 140155402749728
brk> 00000000005c4d80: 00007f787901d000 00007f787901d000 00007f787901d000 00007f787901d000
x:00007f78fbad3c84
Terminal:
$ .vendetta/update.rlb
warning: Unknown nb_ctl request: 12
warning: The VAD has been replaced by a hack pending a complete rewrite
warning: Unknown nb_ctl request: 12
warning: The VAD has been replaced by a hack pending a complete rewrite
warning: Unknown nb_ctl request: 12
warning: The VAD has been replaced by a hack pending a complete rewrite
vendetta: ../iup/itable.c:285: iupTableRemove: Assertion `it && key' failed.
Segmentation fault
Errors.log:
sigsegv_trap
caught SIGABRT; generating stack trace
fault address 0x3e80000425d, c35ed080, fffffffa
cr2 0x0000000000000000 0
oldmask 0x0000000000000000 0
trapno 0x0000000000000000 0
err 0x0000000000000000 0
csgsfs 0x0000000000000033 51
efl 0x0000000000000202 514
rip 0x00007f7877737475 140155376858229
rsp 0x00007fff4db620b8 140734497169592
rcx 0xffffffffffffffff -1
rax 0x0000000000000000 0
rdx 0x0000000000000006 6
rbx 0x00007fff4db67c1d 140734497192989
rbp 0x00007f787784fc71 140155378007153
rsi 0x000000000000425d 16989
rdi 0x000000000000425d 16989
r15 0x000000000000011d 285
r14 0x00007f787784fc71 140155378007153
r13 0x00000000006561c7 6644167
r12 0x0000000000656227 6644263
r11 0x0000000000000202 514
r10 0x0000000000000008 8
r9 0x6e6f697472657373 7957695015443329907
r8 0x00007f7878fe8720 140155402749728
brk> 00007f7877737475: 0a73257325732573 4157004f464e4900 524500474e494e52 544c414800524f52
x:257325732500203a
caught SIGSEGV; generating stack trace
fault address (nil), 77753c8c, 00000080
cr2 0x0000000000000000 0
oldmask 0x0000000000000020 32
trapno 0x000000000000000d 13
err 0x0000000000000000 0
csgsfs 0x0000000000000033 51
efl 0x0000000000010246 66118
rip 0x00000000005c4d80 6049152
rsp 0x00007fff4db61bb0 140734497168304
rcx 0x00007f78777d3b0d 140155377498893
rax 0x0000000000000000 0
rdx 0x2573257325732573 2698541778204829043
rbx 0x00007f787784fc71 140155378007153
rbp 0x000000000d4d0280 223150720
rsi 0x0000000000000000 0
rdi 0x257325732500203a 2698541778197291066
r15 0x00007f787784fc71 140155378007153
r14 0x00007f7877737475 140155376858229
r13 0x00007fff4db61c40 140734497168448
r12 0x000000000000000a 10
r11 0x0000000000000001 1
r10 0x0000000000000000 0
r9 0x00000000ffffffff 4294967295
r8 0x00007f7878fe8720 140155402749728
brk> 00000000005c4d80: 00007f787901d000 00007f787901d000 00007f787901d000 00007f787901d000
x:00007f78fbad3c84
Terminal:
$ .vendetta/update.rlb
warning: Unknown nb_ctl request: 12
warning: The VAD has been replaced by a hack pending a complete rewrite
warning: Unknown nb_ctl request: 12
warning: The VAD has been replaced by a hack pending a complete rewrite
warning: Unknown nb_ctl request: 12
warning: The VAD has been replaced by a hack pending a complete rewrite
vendetta: ../iup/itable.c:285: iupTableRemove: Assertion `it && key' failed.
Segmentation fault
Did you have any plugins installed?
Half a dozen, and I have not tried to isolate the cause of the crash by disabling plugins. It would be difficult, given that the crash does not occur consistently.
I consider it a bug if a plugin can cause a segfault. Nothing a plugin does should result in unchecked manipulation of pointers.
I consider it a bug if a plugin can cause a segfault. Nothing a plugin does should result in unchecked manipulation of pointers.
vendetta: ../iup/itable.c:285: iupTableRemove: Assertion `it && key' failed.
Yep - the table.remove function has a few holes in it
removing a nil has some pretty interesting results.
its a plug in doing it but nothing to say which plug in is the culprit
Yep - the table.remove function has a few holes in it
removing a nil has some pretty interesting results.
its a plug in doing it but nothing to say which plug in is the culprit
If it's caused by a plugin, it's not a bug. The devs provide the API so that players can extend the interface, but the devs will only support the basic client interface. Any problems arising from the use of plugins are outside the realm of their support. In fact, they will just ask you to remove your plugins and verify it is still happening.
"I consider it a bug if a plugin can cause a segfault."
This. Bugs in the sandbox are still bugs.
This. Bugs in the sandbox are still bugs.
Plugins are not a 100% supported feature, so any crashes due to a plugin are out of our hands.
It's like having an app crash in Windows/Linux/OSX and claiming Windows/Linux/OSX has a bug.
It's like having an app crash in Windows/Linux/OSX and claiming Windows/Linux/OSX has a bug.
No, not quite. It's like having an app cause the OS to kernel panic and claiming the OS has a bug. If a userspace app can cause a kernel panic, the OS does have a bug.
Isn't that what we tell people when they're playing VO and their video driver kernel panics?
As much as I hate to say it - it is almost impossible to completely fool proof the code. There are 10,000 ways to crash it and detecting all of them is a bit much to expect.
To isolate which plug in - uninstall half of them and see if it still does it...if it does then uninstall half again and retest. if it doesnt then install a few instead...
When you think you know which one it is then reinstall everything else and if the crashes are gone report the bug to the plug in maintainer.
To isolate which plug in - uninstall half of them and see if it still does it...if it does then uninstall half again and retest. if it doesnt then install a few instead...
When you think you know which one it is then reinstall everything else and if the crashes are gone report the bug to the plug in maintainer.
Of course it's impossible to foolproof code; that's why we have a bugs forum.
Thanks for the plugin isolation guide. I imagine someone who doesn't know how might read this and find it of use.
I already know how to track down a bad plugin. Given some time, I can probably find and correct the bug in the plugin as well. There are three problems though:
1. The crash is unpredictable as far as I know. I cannot reliably reproduce it.
2. A crash makes it a lot harder to do anything useful with any of the tools available for debugging plugins.
3. A plugin being able to cause a segfault is still a serious bug, and I'm hoping to get it acknowledged as such. I'd even be happy with "this is a serious bug, but it happens rarely in practice so we're going to triage it indefinitely".
Thanks for the plugin isolation guide. I imagine someone who doesn't know how might read this and find it of use.
I already know how to track down a bad plugin. Given some time, I can probably find and correct the bug in the plugin as well. There are three problems though:
1. The crash is unpredictable as far as I know. I cannot reliably reproduce it.
2. A crash makes it a lot harder to do anything useful with any of the tools available for debugging plugins.
3. A plugin being able to cause a segfault is still a serious bug, and I'm hoping to get it acknowledged as such. I'd even be happy with "this is a serious bug, but it happens rarely in practice so we're going to triage it indefinitely".
Actually, the first one is a SIGABRT, the game is aborting because it got a NULL pointer when it didn't expect one.
The second one (SIGSEGV) is surprising because the SIGABRT should not have let the game continue such that it is able to crash.
The second one (SIGSEGV) is surprising because the SIGABRT should not have let the game continue such that it is able to crash.
Question: are you using BountyHUD? I'm doing some IUP stuff in it that I'm not sure is legit. I've also noticed VO crashing like this a few times lately (I've definitely gotten some SIGABRTs, not sure if I got any SIGSEGVs). It coincides with roughly when I started working on BountyHUD, but then again it also coincides with which I started playing more frequently again. I disabled it a couple sessions ago and haven't seen it crash since, but it was infrequent enough that this doesn't really mean anything yet.
The next suspect on my list if it happens again is FlamboyanceHUD, since I believe that's the only other plugin I've installed lately.
The next suspect on my list if it happens again is FlamboyanceHUD, since I believe that's the only other plugin I've installed lately.
I am not. I'll see if I can figure out how to reproduce this reliably. I can probably fix my own problem and contribute a better bug report at the same time.