Arx Libertatis Bug Tracker
star_faded.png
Please log in to bookmark issues
bug_report_small.png
CLOSED  Crash report #218  -  [B5DFC6E4] Master DevIL SSE3 bug
Posted Mar 16, 2012 - updated Jun 16, 2012   Shortlink: http://arx.vg/218
action_vote_minus_faded.png
0
Votes
action_vote_plus_faded.png
icon_info.png This issue has been closed with status "Upstream" and resolution "Not determined".
Issue details
  • Type of issue
    Crash report
  • Status
     
    Upstream
  • Assigned to
  • Type of bug
    Not triaged
  • Likelihood
    Not triaged
  • Effect
    Not triaged
  • Posted by
     Beliar
  • Owned by
    Not owned by anyone
  • Estimated time
    Not estimated
  • Category
    Not determined
  • Resolution
    Not determined
  • Priority
    Not determined
  • Reproducability
    Not determined
  • Severity
    Not determined
  • Targetted for
    icon_milestones.png Not determined
  • OS
    icon_customdatatype.png Not determined
  • Architecture
    icon_customdatatype.png Not determined
  • Fixed in
    icon_customdatatype.png Not determined
Issue description
Illegal instruction

GDB stack trace:
  1. [Thread debugging using libthread_db enabled]
  2. [New Thread 0xb69edb70 (LWP 639)]
  3. [New Thread 0xb71eeb70 (LWP 638)]
  4. CrashHandlerPOSIX::handleCrash (this=0x9e17540, signal=4, code=2) at /home/karsten/projects/ArxLibertatis/src/platform/crashhandler/CrashHandlerPOSIX.cpp:285
  5. 285 while(true) {
  6. [Current thread is 1 (Thread 0xb77106d0 (LWP 636))]
  7. Id Target Id Frame
  8. 3 Thread 0xb71eeb70 (LWP 638) "arx" 0x00cd0416 in __kernel_vsyscall ()
  9. 2 Thread 0xb69edb70 (LWP 639) "Sound Update" 0x00cd0416 in __kernel_vsyscall ()
  10. * 1 Thread 0xb77106d0 (LWP 636) "arx" CrashHandlerPOSIX::handleCrash (this=0x9e17540, signal=4, code=2) at /home/karsten/projects/ArxLibertatis/src/platform/crashhandler/CrashHandlerPOSIX.cpp:285
  11.  
  12. Thread 3 (Thread 0xb71eeb70 (LWP 638)):
  13. #0 0x00cd0416 in __kernel_vsyscall ()
  14. No symbol table info available.
  15. #1 0x00b0b7ae in __GI___poll (fds=0xb71ee2a0, nfds=1, timeout=1000) at ../sysdeps/unix/sysv/linux/poll.c:87
  16. resultvar = <optimized out>
  17. oldtype = -516
  18. result = <optimized out>
  19. #2 0x00d15a5e in ?? () from /usr/lib/i386-linux-gnu/libasound.so.2
  20. No symbol table info available.
  21. #3 0x00d15c24 in snd_pcm_wait () from /usr/lib/i386-linux-gnu/libasound.so.2
  22. No symbol table info available.
  23. #4 0x00473725 in ?? () from /usr/lib/libopenal.so.1
  24. No symbol table info available.
  25. #5 0x00416df0 in ?? () from /usr/lib/libopenal.so.1
  26. No symbol table info available.
  27. #6 0x009d7d31 in start_thread (arg=0xb71eeb70) at pthread_create.c:304
  28. __res = <optimized out>
  29. pd = 0xb71eeb70
  30. now = <optimized out>
  31. unwind_buf = {cancel_jmp_buf = {{jmp_buf = {10391540, 0, 4001536, -1222712184, 128110811, 10458036}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
  32. not_first_call = <optimized out>
  33. robust = <optimized out>
  34. pagesize_m1 = <optimized out>
  35. sp = <optimized out>
  36. freesize = <optimized out>
  37. __PRETTY_FUNCTION__ = "start_thread"
  38. #7 0x00b1a46e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130
  39. No locals.
  40. Backtrace stopped: Not enough registers or memory available to unwind further
  41.  
  42. Thread 2 (Thread 0xb69edb70 (LWP 639)):
  43. #0 0x00cd0416 in __kernel_vsyscall ()
  44. No symbol table info available.
  45. #1 0x009df296 in nanosleep () at ../sysdeps/unix/syscall-template.S:82
  46. No locals.
  47. #2 0x0842d055 in Thread::sleep (milliseconds=100) at /home/karsten/projects/ArxLibertatis/src/platform/Thread.cpp:242
  48. t = {tv_sec = 0, tv_nsec = 100000000}
  49. #3 0x08366c96 in SoundUpdateThread::run (this=0x9f0e7b0) at /home/karsten/projects/ArxLibertatis/src/scene/GameSound.cpp:1869
  50. No locals.
  51. #4 0x0842cfc5 in Thread::entryPoint (param=0x9f0e7b0) at /home/karsten/projects/ArxLibertatis/src/platform/Thread.cpp:111
  52. thread = @0x9f0e7b0
  53. #5 0x009d7d31 in start_thread (arg=0xb69edb70) at pthread_create.c:304
  54. __res = <optimized out>
  55. pd = 0xb69edb70
  56. now = <optimized out>
  57. unwind_buf = {cancel_jmp_buf = {{jmp_buf = {10391540, 0, 4001536, -1231104888, 130207960, 10458036}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
  58. not_first_call = <optimized out>
  59. robust = <optimized out>
  60. pagesize_m1 = <optimized out>
  61. sp = <optimized out>
  62. freesize = <optimized out>
  63. __PRETTY_FUNCTION__ = "start_thread"
  64. #6 0x00b1a46e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130
  65. No locals.
  66. Backtrace stopped: Not enough registers or memory available to unwind further
  67.  
  68. Thread 1 (Thread 0xb77106d0 (LWP 636)):
  69. #0 CrashHandlerPOSIX::handleCrash (this=0x9e17540, signal=4, code=2) at /home/karsten/projects/ArxLibertatis/src/platform/crashhandler/CrashHandlerPOSIX.cpp:285
  70. No locals.
  71. #1 0x08433a41 in signalHandler (signal=4, info=0xbfb38c5c, context=0xbfb38cdc) at /home/karsten/projects/ArxLibertatis/src/platform/crashhandler/CrashHandlerPOSIX.cpp:46
  72. No locals.
  73. #2 <signal handler called>
  74. No symbol table info available.
  75. #3 0x007ca54b in iConvertPal () from /usr/lib/libIL.so.1
  76. No symbol table info available.
  77. #4 0x007caad6 in ilConvertPal () from /usr/lib/libIL.so.1
  78. No symbol table info available.
  79. #5 0x007b797e in iConvertPalette () from /usr/lib/libIL.so.1
  80. No symbol table info available.
  81. #6 0x007b7c24 in iConvertImage () from /usr/lib/libIL.so.1
  82. No symbol table info available.
  83. #7 0x007b8a49 in ilConvertImage () from /usr/lib/libIL.so.1
  84. No symbol table info available.
  85. #8 0x08278ea5 in Image::LoadFromMemory (this=0xa285318, pData=0xa28abd0, size=17464) at /home/karsten/projects/ArxLibertatis/src/graphics/image/Image.cpp:279
  86. bLoaded = 1 '\001'
  87. imageName = 2
  88. imgFormat = 32992
  89. bytesPerPixel = 170427508
  90. dataSize = 4294967295
  91. #9 0x08278cd1 in Image::LoadFromFile (this=0xa285318, filename=@0xa285338) at /home/karsten/projects/ArxLibertatis/src/graphics/image/Image.cpp:198
  92. size = 17464
  93. pData = 0xa28abd0
  94. ret = false
  95. #10 0x082b4d98 in Texture2D::Restore (this=0xa2852f8) at /home/karsten/projects/ArxLibertatis/src/graphics/texture/Texture.cpp:54
  96. bRestored = false
  97. #11 0x082b4c41 in Texture2D::Init (this=0xa2852f8, strFileName=@0xbfb3933c, newFlags={flags = 2}) at /home/karsten/projects/ArxLibertatis/src/graphics/texture/Texture.cpp:26
  98. No locals.
  99. #12 0x08268708 in TextureContainer::LoadFile (this=0xa285258, strPathname=@0xbfb39410) at /home/karsten/projects/ArxLibertatis/src/graphics/data/TextureContainer.cpp:256
  100. flags = {flags = 2}
  101. bLoaded = false
  102. tempPath = {pathstr = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xa288474 "graph/particles/shine1.bmp"}}}
  103. foundPath = true
  104. #13 0x08268a7b in TextureContainer::Load (name=@0xbfb39410, flags={flags = 5}) at /home/karsten/projects/ArxLibertatis/src/graphics/data/TextureContainer.cpp:299
  105. newTexture = 0xa285258
  106. #14 0x08268b61 in TextureContainer::LoadUI (strName=@0xbfb39410, flags={flags = 0}) at /home/karsten/projects/ArxLibertatis/src/graphics/data/TextureContainer.cpp:314
  107. No locals.
  108. #15 0x081ba671 in LoadSysTextures () at /home/karsten/projects/ArxLibertatis/src/core/Core.cpp:905
  109. i = 1
  110. temp = "graph/particles/shine1\000\000\000\000\000\000\370\235\263\277\374k#\b,\236\263\277\060\034(\nХ'\n|Sy\bH\255&\n`\237\263\277\060\034(\n\000\000\000\001\000\b\000\000`\237\263\277H\236\263\277gh#\bh\237\263\277,\236\263\277\000Х'\n`\237\263\277\f\000\000\000\v\000\000\000\035v%\000W\\%\000\364?*\000\060\000\000\000\376\\%\000\000\000\000\000Х'\n8\000\000\000\035\001%\001W\\%\000\364?*\000-\000\000\000\a\000\000\000X\237\263\277h\237\263\277`\237\263\277\364\017\274\000\000$\274\000 \000\000\000-\000\000\000\370\247\253\000p\237\263\277h\237\263\277`\237\263\277\364?*\000-\000\000\000 \000\000\000\037\237\263\277\327\t'\000-\000\000\000T\237\263\277\300\237\263\277\325\036'\000\364?*\000 \000\000\000 \000\000"
  111. i = 15699956
  112. current = 0xa49ecc
  113. #16 0x081b8e72 in InitializeDanae () at /home/karsten/projects/ArxLibertatis/src/core/Core.cpp:608
  114. levelPath = {pathstr = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xa27af14 "graph/levels/level10"}}}
  115. levelFullPath = {pathstr = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xa288fb4 "graph/levels/level10/level10.dlf"}}}
  116. #17 0x081b9f8a in main (argc=2, argv=0xbfb3b704) at /home/karsten/projects/ArxLibertatis/src/core/Core.cpp:829
  117. logFile = {pathstr = {_M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x9e17f74 "/home/karsten/.local/share/arx/arx.log"}}}
  118. rel = {flags = 65535}


Steps to reproduce this issue


I just started the game by typing ./arx into the shell.

#1
icon_reply.pngReply
Comment posted by
 Beliar
Mar 16, 10:43
A file was uploaded. arx.logicon_open_new.png This comment was attached:

30abbaa9-636e-40a4-9c97-cab75b5f45a7
#2
icon_reply.pngReply
Comment posted by
 Beliar
Mar 16, 10:43
A file was uploaded. cfg.iniicon_open_new.png This comment was attached:

30abbaa9-636e-40a4-9c97-cab75b5f45a7
#3
icon_reply.pngReply
Comment posted by
 Beliar
Mar 16, 10:43
A file was uploaded. crash.xmlicon_open_new.png This comment was attached:

30abbaa9-636e-40a4-9c97-cab75b5f45a7
#4
icon_reply.pngReply
Comment posted by
 Daniel Scharrer
Mar 16, 12:33
Hi, thanks for the report. Unfortunately it seems something went wrong with collecting the detailed crash information.

Does this happen every time or just this once? Maybe there will be more information if it happens again.
Did Arx Libertatis work before?

"Illegal instruction" could be caused by memory or stack corruption, but could also mean that your binary was compiled for the wrong architecture. Did you add any additional C/C++ flags like -march or -msse when compiling arx?
#5
icon_reply.pngReply
Comment posted by
 Beliar
Mar 16, 14:29
Hi, it always happens when i start the game. I never got it to run before, though i have only recently started to try to run ArxLibertatis.

I didn't add any additional flags. Just ran cmake and make, like the wiki said.

Also, it seems that the crash report didn't work completely because ptrace complained that it needs su rights. I ran arx with sudo and added the stacktrace that came up then.
#10
icon_reply.pngReply
Comment posted by
 Daniel Scharrer
Mar 17, 08:42
Also, it seems that the crash report didn't work completely because ptrace complained that it needs su rights.
Yes, that was a ubuntu-specific regression, but is fixed now - you should no longer need root for the crash reporter to function properly.

The crash appears to happen deep in DevIL. I assume you installed the libdevil1c2 package from the normal ubuntu repos? What version do you have?

Could you update the source and try again, but instead enable the debug mode? When compiling run $ cmake -DCMAKE_BUILD_TYPE=Debug instead of just cmake and then after making run arx using $ ./arx --debug=src

This will hopefully generate a lot of output on the console (and the same in arx.log). Post the updated arx.log, crash.xml and gdb backtrace.
#12
icon_reply.pngReply
Comment posted by
 Beliar
Mar 18, 08:26
A file was uploaded. arx.logicon_open_new.png
#13
icon_reply.pngReply
Comment posted by
 Beliar
Mar 18, 08:29
A file was uploaded. crash.xmlicon_open_new.png
#14
icon_reply.pngReply
Comment posted by
 Beliar
Mar 18, 08:31
Hi, I updated the files.

My DevIL version, according to the package manager, is 1.7.8-6build2.
#15
icon_reply.pngReply
Comment posted by
 Daniel Scharrer
Mar 23, 17:28
Hi, unfortunately we can't reproduce this issue. Both manual inspection of the code and and valgrind don't find anything that could cause this.

The only remaining explanation is that you devil library really uses instructions that are not supported by your CPU. If you are sure that your CPU is not too old to be supported by your Ubuntu distribution, you could try reporting this to the maintainers of the devil package.

Sorry that I can't be of more help here.

The issue was updated with the following change(s):
  • The status has been updated, from New to Not a bug.
  • This issue has been closed
  • The resolution has been updated, from Not determined to CAN'T REPRODUCE.
  • This issue's progression has been updated to 100 percent completed.
#16
icon_reply.pngReply
Comment posted by
 Beliar
Mar 24, 07:50
Hi,

you seem to be correct.

I tried compiling DevIL in debug mode. This made the game suddenly work. I noticed that it compiled without any extensions so I disabled SSE3 and compiled in release mode. With this the game also runs now.

So, yes, the problem was inside DevIL, not Arx.

Beliar
#20
icon_reply.pngReply
Comment posted by
 Daniel Scharrer
Jun 16, 03:46
Changing title as a lot of bugs have been marked as a duplicate of this