On Sun, 2014-03-02 at 00:00 -0600, Scott Duplichan wrote:
This looks like a divide exception. Finding the source code for the failing divide might help narrow down the problem. I can't recreate your binary exactly so I can't find the failing instruction from the eip value. But based on register values, it looks like it is somewhere around line 334 of file amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/GfxGmcInitTN.c You might be able to use the link map, disassembly, or debug prints to figure out the exact source line that is failing.
I compiled the GDB support and connected to it from the other computer. The outcome of the debugging:
_text () at src/arch/x86/lib/c_start.S:89 warning: Source file is more recent than executable. 89 call main (gdb) c Continuing.
Program received signal SIGFPE, Arithmetic exception. 0x0022fabf in GfxGmcInitializeSequencerTN (Gfx=0x10000660) at src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/GfxGmcInitTN.c:334 warning: Source file is more recent than executable. 334 scale_mp0 = (GfxLibGetMaxSclk (GnbLibGetHeader (Gfx)) * 100) / memps0_freq;
(gdb) p memps0_freq $1 = 0
(gdb) p Gfx $2 = (GFX_PLATFORM_CONFIG *) 0x10000660
(gdb) l 329 } 330 331 //scale_mp0 = sclk_max_freq / memps0_freq 332 //scale_mp1 = sclk_max_freq / memps1_freq 333 //Multiply it by 100 to avoid dealing with floating point values 334 scale_mp0 = (GfxLibGetMaxSclk (GnbLibGetHeader (Gfx)) * 100) / memps0_freq; 335 scale_mp1 = (GfxLibGetMaxSclk (GnbLibGetHeader (Gfx)) * 100) / memps1_freq; 336 337 GnbRegisterReadTN (TYPE_GMM , 0x2774 , &ex1047.Value, 0, GnbLibGetHeader (Gfx)); 338 GnbRegisterReadTN (TYPE_GMM , 0x2778 , &ex1048.Value, 0, GnbLibGetHeader (Gfx));
(gdb) p memps1_freq $5 = 333
Regards; Rostislav Lisovy