retitle 282645 xserver-xfree86: [nv] SEGV in NVDmaWait() when using XAA on NV5M64 [RIVA TNT2 Model 64/Model 64 Pro] rev 21 severity 282645 important tag 282645 + upstream moreinfo help thanks
On Tue, Nov 23, 2004 at 04:25:27PM +0100, Joost Kooij wrote: > Package: xserver-xfree86 > Architecture: i386 > Version: 4.3.0.dfsg.1-8 > > Hi, > > The xserver-xfree86 nv module crashes on my no-name Nvidia TNT2 64 card. > > Included below is: > -backtrace obtained from xserver-xfree86-dbg package; > -/var/log/XFree86.log > > If you need more information from me, just ask. Thank you for the detailed report! It would be nice to have your XF86Config-4, just for completeness. I assume from the title of your report that the problem goes away if you specify 'Option "NoAccel"' in the "Device" section of your XF86Config-4? Here's the relevant part of the source code: 117 /* There is a HW race condition with videoram command buffers. 118 You can't jump to the location of your put offset. We write put 119 at the jump offset + SKIPS dwords with noop padding in between 120 to solve this problem */ 121 #define SKIPS 8 122 123 void 124 NVDmaWait ( 125 NVPtr pNv, 126 int size 127 ){ 128 int dmaGet; 129 130 size++; 131 132 while(pNv->dmaFree < size) { 133 dmaGet = READ_GET(pNv); 134 135 if(pNv->dmaPut >= dmaGet) { 136 pNv->dmaFree = pNv->dmaMax - pNv->dmaCurrent; 137 if(pNv->dmaFree < size) { 138 NVDmaNext(pNv, 0x20000000); 139 if(dmaGet <= SKIPS) { 140 if(pNv->dmaPut <= SKIPS) /* corner case - will be idle */ 141 WRITE_PUT(pNv, SKIPS + 1); 142 do { dmaGet = READ_GET(pNv); } 143 while(dmaGet <= SKIPS); 144 } 145 WRITE_PUT(pNv, SKIPS); 146 pNv->dmaCurrent = pNv->dmaPut = SKIPS; 147 pNv->dmaFree = dmaGet - (SKIPS + 1); 148 } 149 } else 150 pNv->dmaFree = dmaGet - pNv->dmaCurrent - 1; 151 } 152 } This sort of problem is way over my head. Tagging "help". > (gdb) bt full > #0 0x080de288 in NVDmaWait (pNv=0x8b6c060, size=2) at nv_xaa.c:138 > dmaGet = 0 > #1 0x080def8f in NVSetupForMono8x8PatternFill (pScrn=0x8b6bb68, > patternx=-289677961, patterny=-289677961, fg=-16777216, bg=-1, > rop=3, planemask=4278190080) at nv_xaa.c:390 > pNv = 0x8b6c060 > #2 0x08382def in XAAFillMono8x8PatternRectsScreenOrigin (pScrn=0x8b6bb68, > fg=0, bg=16777215, rop=3, planemask=4294967295, > nBox=1, pBox=0xbffffcf0, pattern0=-289677961, pattern1=-289677961, > xorigin=0, yorigin=0) at xaaFillRect.c:438 > infoRec = 0x8b6e860 > patx = -289677961 > paty = -289677961 > xorg = -289677961 > yorg = -289677961 > #3 0x083907e3 in XAAPaintWindow (pWin=0x8b9e790, prgn=0xbffffcf0, what=0) at > xaaPaintWin.c:137 > pPriv = 0x8c5caac > NoCache = 0 > xorg = 0 > pBgWin = 0x8b9e790 > yorg = 0 > pScreen = 0x8b6d968 > infoRec = 0x8b6e860 > nBox = 1 > pBox = 0xbffffcf0 > fg = -1 > pPix = 0x8c5ca78 > #4 0x0863a5c9 in miSpritePaintWindowBackground (pWin=0x8b9e790, > pRegion=0xbffffcf0, what=0) at misprite.c:845 > pScreen = 0x8b6d968 > pScreenPriv = 0x8b81990 > #5 0x0861c489 in miWindowExposures (pWin=0x8b9e790, prgn=0xbffffcf0, > other_exposed=0x0) at miexpose.c:536 > expRec = {extents = {x1 = 0, y1 = 0, x2 = -848, y2 = -16385}, data = > 0x8c5ca78} > clientInterested = 0 > exposures = 0xbffffcf0 > #6 0x0849ee99 in xf86XVWindowExposures (pWin=0x8b9e790, reg1=0xbffffcf0, > reg2=0x0) at xf86xv.c:1035 > pScreen = 0x8b6d968 > ScreenPriv = 0x8b80f38 > WinPriv = 0x0 > pPrev = 0xbffffcc0 > pPriv = 0x0 > AreasExposed = 0 > #7 0x08507fad in MapWindow (pWin=0x8b9e790, client=0x8b5eb60) at > window.c:2867 > temp = {extents = {x1 = 0, y1 = 0, x2 = 640, y2 = 480}, data = 0x0} > pScreen = 0x8b6d968 > pParent = 0x0 > dosave = 0 > pLayerWin = 0x8b9e1f0 > #8 0x08503394 in InitRootWindow (pWin=0x8b9e790) at window.c:520 > pScreen = 0x8b6d968 > #9 0x084f5862 in main (argc=1, argv=0xbffffe34, envp=0xbffffe3c) at > main.c:454 > i = 0 > j = 2 > k = 2 > error = -1208181990 > xauthfile = 0x0 > alwaysCheckForInput = {0, 1} > (gdb) The program is running. Exit anyway? (y or n) y -- G. Branden Robinson | I'm a firm believer in not drawing Debian GNU/Linux | trend lines before you have data [EMAIL PROTECTED] | points. http://people.debian.org/~branden/ | -- Tim Ottinger
signature.asc
Description: Digital signature