[Mesa-dev] [PATCH] r300/compiler: Avoid generating MOV instructions for invalid IMM swizzles

son_of_the_osiris at interia.pl son_of_the_osiris at interia.pl
Sun Oct 14 11:06:48 PDT 2012


Here is what valgrind says:

[root at tomek-pc pc-linux64]# valgrind 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend
==699== Memcheck, a memory error detector
==699== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==699== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==699== Command: /root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend
==699==
This is Lightsmark 2008 [Linux 64bit] log. Check it if benchmark doesn't 
work properly.
r300: DRM version: 2.24.0, Name: ATI RV350, ID: 0x4150, GB: 1, Z: 1
r300: GART size: 125 MB, VRAM size: 128 MB
r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: NO
Penumbra quality: 8/8 on Gallium 0.4 on ATI RV350.
Loading Lightsmark2008.cfg...
   Loading objects/I_Robot_female_HD.3DS...
   Loading scenes/wop_padattic/wop_padatticBB.ani...
   Detection quality: auto->high.
   Loading scene scenes/wop_padattic/wop_padatticBB.bsp...
   FMOD error! (60) Error initializing output device.
radeon: Acquired Hyper-Z.
==699== Invalid read of size 1
==699==    at 0x6F51A15: ??? (in /usr/lib/libGLU.so.1.3.1)
==699==    by 0x6F57836: gluBuild2DMipmaps (in /usr/lib/libGLU.so.1.3.1)
==699==    by 0x432E9B: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x43324F: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x4333BB: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x438AFA: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x43A71B: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x438133: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x4381FD: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x428763: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x40FD01: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x40FDB8: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==  Address 0x128e08c0 is 0 bytes after a block of size 212,992 
alloc'd
==699==    at 0x4C2B307: operator new[](unsigned long) (in 
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==699==    by 0x43B777: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x419418: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x43AEF2: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x43BD3B: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x4204F7: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x422488: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x422C61: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x419C92: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x40E108: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x40B3CC: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x40F377: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==
==699== Invalid read of size 1
==699==    at 0x6F51D27: ??? (in /usr/lib/libGLU.so.1.3.1)
==699==    by 0x6F57836: gluBuild2DMipmaps (in /usr/lib/libGLU.so.1.3.1)
==699==    by 0x432E9B: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x43324F: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x4333BB: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x438AFA: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x43A71B: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x438133: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x4381FD: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x428763: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x40FD01: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x40FDB8: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==  Address 0x128e08c0 is 0 bytes after a block of size 212,992 
alloc'd
==699==    at 0x4C2B307: operator new[](unsigned long) (in 
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==699==    by 0x43B777: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x419418: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x43AEF2: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x43BD3B: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x4204F7: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x422488: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x422C61: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x419C92: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x40E108: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x40B3CC: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x40F377: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==
==699== Conditional jump or move depends on uninitialised value(s)
==699==    at 0x429BA4: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x4119D0: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x5AC8863: ??? (in /usr/lib/libglut.so.3.9.0)
==699==    by 0x5ACC048: fgEnumWindows (in /usr/lib/libglut.so.3.9.0)
==699==    by 0x5AC8DAB: glutMainLoopEvent (in /usr/lib/libglut.so.3.9.0)
==699==    by 0x5AC9660: glutMainLoop (in /usr/lib/libglut.so.3.9.0)
==699==    by 0x4139BB: ??? (in 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend)
==699==    by 0x6499724: (below main) (in /usr/lib/libc-2.16.so)
==699==
*** stack smashing detected ***: 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend terminated
======= Backtrace: =========
/usr/lib/libc.so.6(__fortify_fail+0x37)[0x6573ad7]
/usr/lib/libc.so.6(__fortify_fail+0x0)[0x6573aa0]
/usr/lib/xorg/modules/dri/r300_dri.so(rc_dataflow_swizzles+0x8c9)[0xa67f0c9] 

/usr/lib/xorg/modules/dri/r300_dri.so(rc_run_compiler_passes+0x4e)[0xa66211e] 

/usr/lib/xorg/modules/dri/r300_dri.so(rc_run_compiler+0x37)[0xa6621c7]
/usr/lib/xorg/modules/dri/r300_dri.so(r3xx_compile_fragment_program+0x7c0)[0xa675070] 

/usr/lib/xorg/modules/dri/r300_dri.so(+0x1fad05)[0xa66cd05]
/usr/lib/xorg/modules/dri/r300_dri.so(r300_pick_fragment_shader+0x437)[0xa66de17] 

/usr/lib/xorg/modules/dri/r300_dri.so(r300_update_derived_state+0x3b8)[0xa65cd58] 

/usr/lib/xorg/modules/dri/r300_dri.so(+0x1e1bca)[0xa653bca]
/usr/lib/xorg/modules/dri/r300_dri.so(+0x41f57b)[0xa89157b]
/usr/lib/xorg/modules/dri/r300_dri.so(+0x2ccc33)[0xa73ec33]
/usr/lib/xorg/modules/dri/r300_dri.so(+0x2c5889)[0xa737889]
/usr/lib/xorg/modules/dri/r300_dri.so(+0x2b9e11)[0xa72be11]
/usr/lib/xorg/modules/dri/r300_dri.so(+0x2c2c08)[0xa734c08]
/usr/lib/xorg/modules/dri/r300_dri.so(+0x27ef55)[0xa6f0f55]
/usr/lib/xorg/modules/dri/r300_dri.so(+0x27f26a)[0xa6f126a]
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend[0x42b489]
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend[0x42bdf7]
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend[0x429bbc]
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend[0x4119d1]
/usr/lib/libglut.so.3(+0x22864)[0x5ac8864]
/usr/lib/libglut.so.3(fgEnumWindows+0x39)[0x5acc049]
/usr/lib/libglut.so.3(glutMainLoopEvent+0x11c)[0x5ac8dac]
/usr/lib/libglut.so.3(glutMainLoop+0xa1)[0x5ac9661]
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend[0x4139bc]
/usr/lib/libc.so.6(__libc_start_main+0xf5)[0x6499725]
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend(__gxx_personality_v0+0x251)[0x407009] 

======= Memory map: ========
00400000-004b3000 r-xp 00000000 08:01 5039 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend
006b2000-006b4000 rw-p 000b2000 08:01 5039 
/root/Desktop/Lightsmark2008.2.0/bin/pc-linux64/backend
006b4000-006fb000 rw-p 00000000 00:00 0
04000000-04021000 r-xp 00000000 08:01 914589                             
/usr/lib/ld-2.16.so
04021000-04023000 rw-p 00000000 00:00 0
04023000-04024000 rw-s 10ba0e000 00:05 7257                              
/dev/dri/card0
04024000-04034000 rw-s 10a86d000 00:05 7257                              
/dev/dri/card0
04034000-04035000 rw-s 10ba0f000 00:05 7257                              
/dev/dri/card0
04035000-04036000 rw-s 10bb66000 00:05 7257                              
/dev/dri/card0
04036000-04037000 rw-s 10bb67000 00:05 7257                              
/dev/dri/card0
04037000-04038000 rw-s 10bb7e000 00:05 7257                              
/dev/dri/card0
04038000-04039000 rw-s 10bb7f000 00:05 7257                              
/dev/dri/card0
04039000-0403a000 rw-s 10bb96000 00:05 7257                              
/dev/dri/card0
0403a000-0403b000 rw-s 10bb97000 00:05 7257                              
/dev/dri/card0
0403b000-0403c000 rw-s 10bcee000 00:05 7257                              
/dev/dri/card0
0403c000-0403d000 rw-s 10bcef000 00:05 7257                              
/dev/dri/card0
0403d000-0403e000 rw-s 10bd06000 00:05 7257                              
/dev/dri/card0
0403e000-0403f000 rw-s 10bd07000 00:05 7257                              
/dev/dri/card0
0403f000-04040000 rw-s 10bd1e000 00:05 7257                              
/dev/dri/card0
04040000-04041000 rw-s 10bd1f000 00:05 7257                              
/dev/dri/card0
04041000-04043000 rw-s 10bd20000 00:05 7257                              
/dev/dri/card0
04043000-04044000 rw-s 10bd22000 00:05 7257                              
/dev/dri/card0
04044000-04045000 rw-s 10bd23000 00:05 7257                              
/dev/dri/card0
04045000-04046000 rw-s 10bd3a000 00:05 7257                              
/dev/dri/card0
04046000-04047000 rw-s 10bd3b000 00:05 7257                              
/dev/dri/card0
04047000-04048000 rw-s 10bd52000 00:05 7257                              
/dev/dri/card0
04048000-04049000 rw-s 10bd53000 00:05 7257                              
/dev/dri/card0
04049000-0404a000 rw-s 10bd6a000 00:05 7257                              
/dev/dri/card0
0404a000-0405a000 rw-p 00000000 00:00 0
0405a000-04062000 rw-s 10a87d000 00:05 7257                              
/dev/dri/card0
04062000-0406a000 rw-s 10a885000 00:05 7257                              
/dev/dri/card0
0406a000-04072000 rw-s 10a88d000 00:05 7257                              
/dev/dri/card0
04072000-0407a000 rw-s 10a895000 00:05 7257                              
/dev/dri/card0
0407a000-04082000 rw-s 10a89d000 00:05 7257                              
/dev/dri/card0
04082000-0408a000 rw-s 10a8a5000 00:05 7257                              
/dev/dri/card0
0408a000-04092000 rw-s 10a8ad000 00:05 7257                              
/dev/dri/card0
04092000-0409a000 rw-s 10a8b5000 00:05 7257                              
/dev/dri/card0
0409a000-040a2000 rw-s 10a8bd000 00:05 7257                              
/dev/dri/card0
040a2000-040aa000 rw-s 10a8c5000 00:05 7257                              
/dev/dri/card0
040aa000-040b2000 rw-s 10a8cd000 00:05 7257                              
/dev/dri/card0
040b2000-040ba000 rw-s 10a8d5000 00:05 7257                              
/dev/dri/card0
040ba000-040c2000 rw-s 10a8dd000 00:05 7257                              
/dev/dri/card0
040c2000-040ca000 rw-s 10a8e5000 00:05 7257                              
/dev/dri/card0
040ca000-040d2000 rw-s 10a8ed000 00:05 7257                              
/dev/dri/card0
040d2000-040da000 rw-s 10a8f5000 00:05 7257                              
/dev/dri/card0
040da000-040e2000 rw-s 10a8fd000 00:05 7257                              
/dev/dri/card0
040e2000-040ea000 rw-s 10a905000 00:05 7257                              
/dev/dri/card0
040ea000-040f2000 rw-s 10a90d000 00:05 7257                              
/dev/dri/card0
040f2000-040fa000 rw-s 10a915000 00:05 7257                              
/dev/dri/card0
040fa000-04102000 rw-s 10a91d000 00:05 7257                              
/dev/dri/card0
04102000-0410a000 rw-s 10a925000 00:05 7257                              
/dev/dri/card0
0410a000-04112000 rw-s 10a92d000 00:05 7257                              
/dev/dri/card0
04112000-0411a000 rw-s 10a935000 00:05 7257                              
/dev/dri/card0
0411a000-04122000 rw-s 10a93d000 00:05 7257                              
/dev/dri/card0
04122000-0412a000 rw-s 10a945000 00:05 7257                              
/dev/dri/card0
0412a000-04132000 rw-s 10a94d000 00:05 7257                              
/dev/dri/card0
04132000-04133000 rw-s 10a955000 00:05 7257                              
/dev/dri/card0
04133000-04134000 rw-s 10a956000 00:05 7257                              
/dev/dri/card0
04134000-04135000 rw-s 10a957000 00:05 7257                              
/dev/dri/card0
04135000-04136000 rw-s 10a958000 00:05 7257                              
/dev/dri/card0
04136000-04137000 rw-s 10a959000 00:05 7257                              
/dev/dri/card0
04137000-04138000 rw-s 10a95a000 00:05 7257                              
/dev/dri/card0
04138000-04139000 rw-s 10a95b000 00:05 7257                              
/dev/dri/card0
04139000-0413a000 rw-s 10a95c000 00:05 7257                              
/dev/dri/card0
0413a000-0413b000 rw-s 10a95d000 00:05 7257                              
/dev/dri/card0
0413b000-0413c000 rw-s 10a95e000 00:05 7257                              
/dev/dri/card0
0413c000-0413d000 rw-s 10a95f000 00:05 7257                              
/dev/dri/card0
0413d000-0413e000 rw-s 10a960000 00:05 7257                              
/dev/dri/card0
0413e000-0413f000 rw-s 10a961000 00:05 7257                              
/dev/dri/card0
0413f000-04140000 rw-s 10a962000 00:05 7257                              
/dev/dri/card0
04140000-04141000 rw-s 10a963000 00:05 7257                              
/dev/dri/card0
04141000-04142000 rw-s 10a964000 00:05 7257                              
/dev/dri/card0
04142000-04143000 rw-s 10a965000 00:05 7257                              
/dev/dri/card0
04143000-04144000 rw-s 10a966000 00:05 7257                              
/dev/dri/card0
04144000-04145000 rw-s 10a967000 00:05 7257                              
/dev/dri/card0
04145000-04146000 rw-s 10a968000 00:05 7257                              
/dev/dri/card0
04146000-04147000 rw-s 10a969000 00:05 7257                              
/dev/dri/card0
04147000-04148000 rw-s 10a96a000 00:05 7257                              
/dev/dri/card0
04148000-04149000 rw-s 10a96b000 00:05 7257                              
/dev/dri/card0
04149000-0414a000 rw-s 10a96c000 00:05 7257                              
/dev/dri/card0
0414a000-0414b000 rw-s 10a96d000 00:05 7257                              
/dev/dri/card0
0414b000-0414c000 rw-s 10a96e000 00:05 7257                              
/dev/dri/card0
0414c000-0414d000 rw-s 10a96f000 00:05 7257                              
/dev/dri/card0
0414d000-0414e000 rw-s 10a970000 00:05 7257                              
/dev/dri/card0
0414e000-0414f000 rw-s 10a971000 00:05 7257                              
/dev/dri/card0
0414f000-04150000 rw-s 10a972000 00:05 7257                              
/dev/dri/card0
04150000-04151000 rw-s 10a973000 00:05 7257                              
/dev/dri/card0
04151000-04152000 rw-s 10a974000 00:05 7257                              
/dev/dri/card0
04152000-04153000 rw-s 10a975000 00:05 7257                              
/dev/dri/card0
04153000-04154000 rw-s 10a976000 00:05 7257                              
/dev/dri/card0
04154000-04155000 rw-s 10a977000 00:05 7257                              
/dev/dri/card0
04155000-04156000 rw-s 10a978000 00:05 7257                              
/dev/dri/card0
04156000-04157000 rw-s 10a979000 00:05 7257                              
/dev/dri/card0
04157000-04158000 rw-s 10a97a000 00:05 7257                              
/dev/dri/card0
04158000-04159000 rw-s 10a97b000 00:05 7257                              
/dev/dri/card0
04159000-0415a000 rw-s 10a97c000 00:05 7257                              
/dev/dri/card0
0415a000-0415b000 rw-s 10a97d000 00:05 7257                              
/dev/dri/card0
0415b000-0415c000 rw-s 10a97e000 00:05 7257                              
/dev/dri/card0
0415c000-0415d000 rw-s 10a97f000 00:05 7257                              
/dev/dri/card0
0415d000-0415e000 rw-s 10a980000 00:05 7257                              
/dev/dri/card0
0415e000-0415f000 rw-s 10a981000 00:05 7257                              
/dev/dri/card0
0415f000-04160000 rw-s 10a982000 00:05 7257                              
/dev/dri/card0
==699== -04161000 rw-s 10a983000 00:05 7257                              
/dev/dri/card0
==699== HEAP SUMMARY:
==699==     in use at exit: 160,713,518 bytes in 77,139 blocks
==699==   total heap usage: 364,438 allocs, 287,299 frees, 592,203,895 
bytes allocated
==699==
==699== LEAK SUMMARY:
==699==    definitely lost: 0 bytes in 0 blocks
==699==    indirectly lost: 0 bytes in 0 blocks
==699==      possibly lost: 24,444,730 bytes in 57,431 blocks
==699==    still reachable: 136,268,788 bytes in 19,708 blocks
==699==         suppressed: 0 bytes in 0 blocks
==699== Rerun with --leak-check=full to see details of leaked memory
==699==
==699== For counts of detected and suppressed errors, rerun with: -v
==699== Use --track-origins=yes to see where uninitialised values come from
==699== ERROR SUMMARY: 81 errors from 3 contexts (suppressed: 2 from 2)


More information about the mesa-dev mailing list