Bug #993

Floating Point Exception in NL3D::CDriverGL::getModes on Linux

Added by incant about 8 years ago. Updated about 8 years ago.

Status:Closed Start date:06/22/2010
Priority:High Due date:
Assignee:kervala % Done:

100%

Category:OS: GNU/Linux
Target version:Version 0.8.0

Description

Built as per instructions linked from the wiki's side bar. Launched ryzom_client in ryzom_client_open directory.
Changeset: 383:532ebe743a92
Running Debian Lenny 5.0.1 Linux 2.6.26-2-486 #1 Tue Mar 9 17:10:34 UTC 2010 i686 GNU/Linux
Video card: Radeon HD 2600 with fglrx drivers

[New Thread 0xb2211b90 (LWP 11546)]
INF b2211b90 login.cpp 733 initLoginScreen <Unknown> : Using verbose log mode
INF b59a8a40 login.cpp 1894 execute <Unknown> : CAHInitResLod called
DBG b59a8a40 driver_opengl_window.cpp 1196 getModes <Unknown> : 3D: 37 available modes:

Program received signal SIGFPE, Arithmetic exception.
[Switching to Thread 0xb59a8a40 (LWP 11542)]
0xb4f5b402 in NL3D::CDriverGL::getModes (this=0xa14bf78, modes=@0xbfffd300) at /home/philippe/ryzom/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp:1203
1203                            mode.Frequency = 1000 * ms[j]->dotclock / (ms[j]->htotal * ms[j]->vtotal);
Current language:  auto; currently c++
(gdb) backtrace full
#0  0xb4f5b402 in NL3D::CDriverGL::getModes (this=0xa14bf78, modes=@0xbfffd300) at /home/philippe/ryzom/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp:1203
        mode = {OffScreen = false, Windowed = false, Width = 3840, Height = 1080, Depth = 0 '\0', Frequency = 0, AntiAlias = -1 '�'}
        j = 0
        nmodes = 37
        ms = (<anonymous struct> **) 0xaa7b050
        ok = 1
        __FUNCTION__ = "getModes" 
#1  0xb6c5ce82 in NL3D::CDriverUser::getModes (this=0x9fe8d28, modes=@0x8b9b21c) at /home/philippe/ryzom/code/nel/src/3d/driver_user.cpp:299
        vTmp = {<std::_Vector_base<NL3D::GfxMode, std::allocator<NL3D::GfxMode> >> = {_M_impl = {<std::allocator<NL3D::GfxMode>> = {<__gnu_cxx::new_allocator<NL3D::GfxMode>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}
        res = 183
#2  0x083017ae in CAHInitResLod::execute ()
No locals.
#3  0x086dd0ca in CInterfaceManager::runActionHandler ()
No locals.
#4  0x089f2695 in CInterfaceGroup::setActive ()
No locals.
#5  0x088eb6d4 in affect ()
No locals.
#6  0x088ece23 in CInterfaceLink::update ()
No locals.
#7  0x088ed1c9 in CInterfaceLink::updateTrigeredLinks ()
No locals.
#8  0x083e035c in CCDBNodeBranch::flushObserversCalls ()
No locals.
#9  0x082ea66d in loginMainLoop ()
No locals.
#10 0x082f1eee in login ()
No locals.
#11 0x082b1fb5 in main ()
No locals.

The offending portion is probably the division. Looks like it:
(gdb) p ms[j][0]
$4 = {dotclock = 0, hdisplay = 3840, hsyncstart = 0, hsyncend = 0, htotal = 0, hskew = 0, vdisplay = 1080, vsyncstart = 0, vsyncend = 0, vtotal = 0, flags = 0, privsize = 0, c_private = 0x0}

My knowledge of anything else stops here. What's happening? Why are these values zero?

History

#1 Updated by kervala about 8 years ago

Maybe because your 2 screens have different frequencies ?

#2 Updated by kervala about 8 years ago

  • Status changed from New to Assigned
  • Assignee set to kervala
  • Priority changed from Normal to High
  • Target version set to Version 0.8.0

Thanks a lot for your detailed report :)

#3 Updated by kervala about 8 years ago

  • Status changed from Assigned to Resolved
  • % Done changed from 0 to 100

Applied in changeset r395.

#4 Updated by incant about 8 years ago

You made a typo. :-)

s/pixelCount/pixelsCount/

#5 Updated by kervala about 8 years ago

Argh sorry :( Thanks again for reporting :)

#6 Updated by kervala about 8 years ago

Applied in changeset r397.

#7 Updated by kervala about 8 years ago

  • Status changed from Resolved to Closed

#8 Updated by kervala about 8 years ago

  • Category changed from NeL: General to OS: GNU/Linux

Also available in: Atom PDF