Bug 78790 - Game Tesseract: Crash on shaders and out of registers LLVM errors
Summary: Game Tesseract: Crash on shaders and out of registers LLVM errors
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/Gallium/radeonsi (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Default DRI bug account
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-05-16 17:09 UTC by Frederik vom Hofe
Modified: 2015-02-03 06:28 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description Frederik vom Hofe 2014-05-16 17:09:27 UTC
Hardware: Radeon 7870 (Pitcairn)
I'm using the Oibaf repository (https://launchpad.net/~oibaf/+archive/graphics-drivers/) on xubuntu 14.04
I also have installed the "xserver-xorg-video-radeon-dbg" debug package from there.

In the 3d game Tesseract (http://tesseract.gg/) some shader (sky shader?) causes llvm to run out of registers or Segmentation fault. And MSAA over 2x will cause LLVM to terminate because of "our of register" errors.


Fast and dirty "How to build tesseract debug version":

You need the SDL2/image/mixer packages.

Command out the first two lines in the tesseract src/Makefile and add one line for debug options like this:
#CXXFLAGS= -03 -fomit-frame-pointer -ffast-math
#override CXXFLAGS+= -Wall -fsigned-char -fno-exceptions -fno-rtti
CXXFLAGS= -g3

NOTE: "make install" only moves the binarys into the folders ../bin_unix/
cd src
make
make install
cd ..
gdb bin_unix/native_client

Then trying to load the first map:
MAP BROWSER -> complex
And this will happen:

Program received signal SIGSEGV, Segmentation fault.
0x00007fffeb529c64 in llvm::TargetInstrInfo::foldMemoryOperand(llvm::MachineBasicBlock::bundle_iterator<llvm::MachineInstr, llvm::ilist_iterator<llvm::MachineInstr> >, llvm::SmallVectorImpl<unsigned int> const&, int) const () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
(gdb) bt
#0  0x00007fffeb529c64 in llvm::TargetInstrInfo::foldMemoryOperand(llvm::MachineBasicBlock::bundle_iterator<llvm::MachineInstr, llvm::ilist_iterator<llvm::MachineInstr> >, llvm::SmallVectorImpl<unsigned int> const&, int) const () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#1  0x00007fffeb3eb039 in ?? () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#2  0x00007fffeb3efdba in ?? () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#3  0x00007fffeb3f27bf in ?? () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#4  0x00007fffeb4ccb4e in ?? () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#5  0x00007fffeb4c0bad in llvm::RegAllocBase::allocatePhysRegs() () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#6  0x00007fffeb4cf281 in ?? () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#7  0x00007fffeb607f77 in llvm::FPPassManager::runOnFunction(llvm::Function&) () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#8  0x00007fffeb607ffb in llvm::FPPassManager::runOnModule(llvm::Module&) () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#9  0x00007fffeb60a4b5 in llvm::legacy::PassManagerImpl::run(llvm::Module&) () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#10 0x00007fffebc90e90 in ?? () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#11 0x00007fffebc911d0 in LLVMTargetMachineEmitToMemoryBuffer () from /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
#12 0x00007fffed143af6 in ?? () from /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
#13 0x00007fffed12ef2c in ?? () from /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
#14 0x00007fffed12f832 in ?? () from /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
#15 0x00007fffed134f02 in ?? () from /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
#16 0x00007fffed134fe4 in ?? () from /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
#17 0x00007fffed2a5b2f in ?? () from /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
#18 0x00007fffed2a6dde in ?? () from /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
#19 0x00007fffed26f497 in ?? () from /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
#20 0x00007fffed26c2b7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
#21 0x00007fffed27fe11 in ?? () from /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
#22 0x00007fffed253a9d in ?? () from /usr/lib/x86_64-linux-gnu/dri/radeonsi_dri.so
#23 0x00000000004123f3 in gle::end () at shared/glemu.cpp:299
#24 0x00000000004edc7c in rhquad (x1=0,241379321, y1=-0,310344875, x2=0,931034505, y2=0,379310369, tx1=-127,851761, ty1=-127,851883, tx2=1150,66675, ty2=1150,66663, tz=1086,74084) at engine/renderlights.cpp:3388
#25 0x00000000004f134c in radiancehints::renderslices (this=0x997660 <rh>) at engine/renderlights.cpp:3661
#26 0x00000000004f1b95 in renderradiancehints () at engine/renderlights.cpp:3751
#27 0x00000000004d74fd in drawcubemap (size=256, o=..., yaw=90, pitch=0, side=..., onlysky=false) at engine/rendergl.cpp:2265
#28 0x00000000005a2e4c in genenvmap (o=..., envmapsize=7, blur=0, onlysky=false) at engine/texture.cpp:2603
#29 0x00000000005a3403 in genenvmaps () at engine/texture.cpp:2688
#30 0x00000000004a2d43 in allchanged (load=true) at engine/octarender.cpp:1740
#31 0x00000000005e73b3 in load_world (mname=0x9ba2c0 <game::parsemessages(int, gameent*, databuf<unsigned char>&)::text> "complex", cname=0x0) at engine/worldio.cpp:871
#32 0x00000000005f67a3 in game::changemapserv (name=0x9ba2c0 <game::parsemessages(int, gameent*, databuf<unsigned char>&)::text> "complex", mode=0) at game/client.cpp:573
#33 0x00000000005fa601 in game::parsemessages (cn=-1, d=0x0, p=...) at game/client.cpp:1337
#34 0x00000000005fd581 in game::parsepacketclient (chan=1, p=...) at game/client.cpp:1945
#35 0x00000000004341a8 in localservertoclient (chan=1, packet=0xf62c20) at engine/client.cpp:206
#36 0x000000000057806d in sendpacket (n=0, chan=1, packet=0xf62c20, exclude=-1) at engine/server.cpp:211
#37 0x0000000000612950 in server::sendwelcome (ci=0x2674880) at game/server.cpp:1688
#38 0x00000000006179a6 in server::connected (ci=0x2674880) at game/server.cpp:2710
#39 0x0000000000617d71 in server::parsepacket (sender=0, chan=1, p=...) at game/server.cpp:2756
#40 0x0000000000578c47 in process (packet=0xaef560, sender=0, chan=1) at engine/server.cpp:345
#41 0x0000000000578d36 in localclienttoserver (chan=1, packet=0xaef560) at engine/server.cpp:353
#42 0x000000000043410e in sendclientpacket (packet=0xaef560, chan=1) at engine/client.cpp:189
#43 0x00000000005f9030 in game::sendintro () at game/client.cpp:1076
#44 0x00000000005fa00e in game::parsemessages (cn=-1, d=0x0, p=...) at game/client.cpp:1261
#45 0x00000000005fd581 in game::parsepacketclient (chan=1, p=...) at game/client.cpp:1945
#46 0x00000000004341a8 in localservertoclient (chan=1, packet=0xf3fbd0) at engine/client.cpp:206
#47 0x000000000057806d in sendpacket (n=0, chan=1, packet=0xf3fbd0, exclude=-1) at engine/server.cpp:211
#48 0x0000000000578591 in sendf (cn=0, chan=1, format=0x65882b "") at engine/server.cpp:261
#49 0x000000000061642e in server::sendservinfo (ci=0x2674880) at game/server.cpp:2397
#50 0x00000000006164ef in server::localconnect (n=0) at game/server.cpp:2415
#51 0x000000000057a26c in localconnect () at engine/server.cpp:737
#52 0x00000000005f6d5e in game::changemap (name=0xf73730 "complex", mode=0) at game/client.cpp:619
#53 0x00000000005f6dfb in game::changemap (name=0xf73730 "complex") at game/client.cpp:625
#54 0x00000000005f6e16 in game::_icmd_map<627>::run (name=0xf73730 "complex") at game/client.cpp:627
#55 0x0000000000441bc0 in runcode (code=0x2667bac, result=...) at engine/command.cpp:2599
#56 0x000000000043ec0c in runcode (code=0x2511d84, result=...) at engine/command.cpp:2292
#57 0x00000000004463bf in executeret (code=0x2511d78, result=...) at engine/command.cpp:2805
#58 0x00000000005ae2fd in UI::uirelease_<3066>::run (t=0x2511d78, f=0x8bf944 <emptyblock+4>) at engine/ui.cpp:3066
#59 0x0000000000441c6a in runcode (code=0x2511d90, result=...) at engine/command.cpp:2599
#60 0x00000000004463bf in executeret (code=0x2511d14, result=...) at engine/command.cpp:2805
#61 0x00000000005bc03d in UI::Object::buildchildren (this=0x26655e0, contents=0x2511d14) at engine/ui.cpp:494
#62 0x00000000005b1450 in UI::_icmd_uitarget<3146>::run (minw=0x7fffffff9070, minh=0x7fffffff9080, children=0x2511d14) at engine/ui.cpp:3145
#63 0x0000000000441d61 in runcode (code=0x2511e24, result=...) at engine/command.cpp:2599
#64 0x00000000004454f4 in runcode (code=0xfbb73c, result=...) at engine/command.cpp:2719
#65 0x0000000000446b78 in execute (code=0xfbb644) at engine/command.cpp:2903
#66 0x0000000000449c33 in looplist (id=0xfa8350, list=0xfa9500 "\n   complex ot turbine\n \n   test_ctf\n \n   test_anim test_model\n", body=0xfbb644) at engine/command.cpp:3574
#67 0x0000000000441d61 in runcode (code=0xfbb744, result=...) at engine/command.cpp:2599
#68 0x000000000043e903 in runcode (code=0xfbb5c4, result=...) at engine/command.cpp:2258
#69 0x00000000004463bf in executeret (code=0xfbb3e8, result=...) at engine/command.cpp:2805
#70 0x00000000005bc03d in UI::Object::buildchildren (this=0x2665460, contents=0xfbb3e8) at engine/ui.cpp:494
#71 0x00000000005b0ff8 in UI::_icmd_uivlist<3111>::run (space=0x7fffffffb040, children=0xfbb3e8) at engine/ui.cpp:3110
#72 0x0000000000441c6a in runcode (code=0xfbb764, result=...) at engine/command.cpp:2599
#73 0x00000000004463bf in executeret (code=0xfbb3c4, result=...) at engine/command.cpp:2805
#74 0x00000000005bc03d in UI::Object::buildchildren (this=0x266ca00, contents=0xfbb3c4) at engine/ui.cpp:494
#75 0x00000000005b1530 in UI::_icmd_uiscroll<3152>::run (clipw=0x7fffffffb870, cliph=0x7fffffffb880, children=0xfbb3c4) at engine/ui.cpp:3151
#76 0x0000000000441d61 in runcode (code=0xfbb76c, result=...) at engine/command.cpp:2599
#77 0x00000000004463bf in executeret (code=0xfbad20, result=...) at engine/command.cpp:2805
#78 0x00000000005bc03d in UI::Object::buildchildren (this=0xf62b80, contents=0xfbad20) at engine/ui.cpp:494
#79 0x00000000005b0f9a in UI::_icmd_uihlist<3108>::run (space=0x7fffffffc0a0, children=0xfbad20) at engine/ui.cpp:3107
#80 0x0000000000441c6a in runcode (code=0xfbb794, result=...) at engine/command.cpp:2599
#81 0x00000000004463bf in executeret (code=0xfbacfc, result=...) at engine/command.cpp:2805
#82 0x00000000005bc03d in UI::Object::buildchildren (this=0xf57590, contents=0xfbacfc) at engine/ui.cpp:494
#83 0x00000000005b1300 in UI::_icmd_uispace<3137>::run (spacew=0x7fffffffc8d0, spaceh=0x7fffffffc8e0, children=0xfbacfc) at engine/ui.cpp:3136
#84 0x0000000000441d61 in runcode (code=0xfbb79c, result=...) at engine/command.cpp:2599
#85 0x00000000004463bf in executeret (code=0xfbacd8, result=...) at engine/command.cpp:2805
#86 0x00000000005bc03d in UI::Object::buildchildren (this=0xf61300, contents=0xfbacd8) at engine/ui.cpp:494
#87 0x00000000005b1990 in UI::_icmd_uicolor<3197>::run (c=0x7fffffffd120, minw=0x7fffffffd130, minh=0x7fffffffd140, children=0xfbacd8) at engine/ui.cpp:3196
#88 0x0000000000441ea2 in runcode (code=0xfbb7a4, result=...) at engine/command.cpp:2599
#89 0x00000000004463bf in executeret (code=0xfbaa60, result=...) at engine/command.cpp:2805
#90 0x00000000005bc03d in UI::Object::buildchildren (this=0xf614a0, contents=0xfbaa60) at engine/ui.cpp:494
#91 0x00000000005b0ff8 in UI::_icmd_uivlist<3111>::run (space=0x7fffffffd950, children=0xfbaa60) at engine/ui.cpp:3110
#92 0x0000000000441c6a in runcode (code=0xfbb7ac, result=...) at engine/command.cpp:2599
#93 0x00000000004463bf in executeret (code=0xfbaa50, result=...) at engine/command.cpp:2805
#94 0x00000000005bc03d in UI::Object::buildchildren (this=0xfb7ad0, contents=0xfbaa50) at engine/ui.cpp:494
#95 0x00000000005ac968 in UI::Window::build (this=0xfb7ad0) at engine/ui.cpp:784
#96 0x00000000005be4fb in UI::World::build (this=0xf5a510) at engine/ui.cpp:701
#97 0x00000000005b3a68 in UI::update () at engine/ui.cpp:3474
#98 0x00000000004669a6 in main (argc=1, argv=0x7fffffffe018) at engine/main.cpp:1212



This one map (without a sky) runs fine:
MAP BROWSER -> test_model

Changing MSAA to a value over 2x will causes an LLVM out of register error:

LLVM ERROR: ran out of registers during register allocation
[Thread 0x7fffe6102700 (LWP 21580) exited]
[Thread 0x7fffeab3c700 (LWP 21578) exited]
[Thread 0x7ffff7fbb780 (LWP 21576) exited]
[Inferior 1 (process 21576) exited with code 01]

No backtrace here.



I also get the bug that I can't use buffers over 256MiB. That already got reported here: https://bugs.freedesktop.org/show_bug.cgi?id=78717
Comment 1 Michel Dänzer 2014-05-17 02:37:34 UTC
The patches referenced on bug 75276 seem to help for Tesseract.
Comment 2 smoki 2015-01-31 15:41:20 UTC
 This works fine for me now in current llvm3.7+mesa git.
Comment 3 Michel Dänzer 2015-02-03 06:28:49 UTC
Fixed with current Mesa and LLVM Git.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.