Public bug reported:
Binary package hint: xserver-xorg-video-nv
Ubuntu 8.04.1 i386
Integrated NVidia video card: (lspci -v)
00:05.0 VGA compatible controller: nVidia Corporation C51 [Quadro NVS
210S/GeForce 6150LE] (rev a2) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. Unknown device 81cd
Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 5
Memory at fc000000 (32-bit, non-prefetchable) [size=16M]
Memory at d0000000 (64-bit, prefetchable) [size=256M]
Memory at fb000000 (64-bit, non-prefetchable) [size=16M]
[virtual] Expansion ROM at 88000000 [disabled] [size=128K]
Capabilities: [48] Power Management version 2
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0
Enable-
Some times when I double-click to some video file (.flv from youtube for
ex.) totem window appears and resize. And in this moment, before playing
video, X.org totally freezes.
Still I can login via ssh from another computer. X eats 100% CPU.
gdb
> attach <PID of X>
0xb6fa3a36 in NVSync () from /usr/lib/xorg/modules/drivers//nv_drv.so
(gdb) bt
#0 0xb6fa3a36 in NVSync () from /usr/lib/xorg/modules/drivers//nv_drv.so
#1 0xb5c9bf22 in XAACopyAreaFallback () from /usr/lib/xorg/modules//libxaa.so
#2 0xb5c9d1d7 in XAACopyArea () from /usr/lib/xorg/modules//libxaa.so
#3 0xb5cdc33a in cwCopyArea () from /usr/lib/xorg/modules//libxaa.so
#4 0x08172516 in ?? ()
#5 0x0811fcac in ?? ()
#6 0x08130828 in ?? ()
#7 0x081308f1 in ?? ()
#8 0x08129ac5 in miPointerUpdateSprite ()
#9 0x080c80bd in ProcessInputEvents ()
#10 0x0808d867 in Dispatch ()
#11 0x0807471b in main ()
I try
* apt-get source xserver-xorg-video-nv
* cd xserver-xorg-video-nv-2.1.8
* nano debian/rules and comment #dh_strip
* dpkg-buildpackage -rfakeroot -b
* cd ..
* sudo dpkg -i xserver-xorg-video-nv_2.1.8-sashnov1_i386.deb
Back trace with debug symbols:
0xb6f43a16 in NVSync (pScrn=0x821d160) at ../../src/nv_xaa.c:305
305 while(pNv->PGRAPH[0x0700/4]);
(gdb) bt
#0 0xb6f43a16 in NVSync (pScrn=0x821d160) at ../../src/nv_xaa.c:305
#1 0xb5c3bf22 in XAACopyAreaFallback () from /usr/lib/xorg/modules//libxaa.so
#2 0xb5c3d1d7 in XAACopyArea () from /usr/lib/xorg/modules//libxaa.so
#3 0xb5c7c33a in cwCopyArea () from /usr/lib/xorg/modules//libxaa.so
#4 0x08172516 in ?? ()
#5 0x0811ed44 in ?? ()
#6 0x081307d0 in ?? ()
#7 0x081308f1 in ?? ()
#8 0x08129ac5 in miPointerUpdateSprite ()
#9 0x080c80bd in ProcessInputEvents ()
#10 0x0808d867 in Dispatch ()
#11 0x0807471b in main ()
Additionally, may be following been usefull:
(gdb) info locals
pNv = (NVPtr) 0x821d650
(gdb) print pNv
$1 = (NVPtr) 0x821d650
(gdb) print *pNv
$2 = {SavedReg = {bpp = 0, width = 0, height = 0, interlace = 255, repaint0 =
0, repaint1 = 189,
screen = 16, scale = 269484049, dither = 786432, extra = 0, fifo = 24,
pixel = 128, horiz = 0,
arbitration0 = 133, arbitration1 = 128, pll = 0, pllB = 0, vpll = 334339,
vpll2 = 197633,
vpllB = 2147495435, vpll2B = 2147490307, pllsel = 2052, control = 0,
general = 256, crtcOwner = 3,
head = 16, head2 = 0, config = 0, cursorConfig = 33554432, cursor0 = 0,
cursor1 = 0, cursor2 = 0,
timingH = 10, timingV = 2, displayV = 0, crtcSync = 1252, crtcVSync =
1024}, ModeReg = {bpp = 0,
width = 0, height = 0, interlace = 0, repaint0 = 0, repaint1 = 0, screen =
0, scale = 0,
dither = 0, extra = 0, fifo = 0, pixel = 0, horiz = 0, arbitration0 = 0,
arbitration1 = 0,
pll = 0, pllB = 0, vpll = 0, vpll2 = 0, vpllB = 0, vpll2B = 0, pllsel = 0,
control = 0,
general = 0, crtcOwner = 0, head = 0, head2 = 0, config = 0, cursorConfig =
0, cursor0 = 0,
cursor1 = 0, cursor2 = 0, timingH = 0, timingV = 0, displayV = 0, crtcSync
= 0, crtcVSync = 0},
CurrentState = 0x0, Architecture = 64, CursorStart = 33013760, pEnt =
0x821af98,
PciInfo = 0x8218f18, PciTag = 10240, Chipset = 282985029, ChipRev = 162,
Primary = 1,
IOAddress = 4227858432, FbAddress = 3489660928,
FbBase = 0xb3c2f000 <Address 0xb3c2f000 out of bounds>,
FbStart = 0xb3c2f000 <Address 0xb3c2f000 out of bounds>, FbMapSize =
33554432,
FbUsableSize = 32980992, ScratchBufferSize = 16384, ScratchBufferStart =
32964608, NoAccel = 0,
HWCursor = 0, FpScale = 1, ShadowFB = 0, ShadowPtr = 0x0, ShadowPitch = 0,
MinVClockFreqKHz = 12000,
MaxVClockFreqKHz = 400000, CrystalFreqKHz = 27000, RamAmountKBytes = 32768,
REGS = 0xb5ca4000,
PCRTC0 = 0xb62a4000, PCRTC = 0xb62a6000, PRAMDAC0 = 0xb6324000, PFB =
0xb5da4000,
PFIFO = 0xb5ca6000, PGRAPH = 0xb60a4000, PEXTDEV = 0xb5da5000, PTIMER =
0xb5cad000,
PMC = 0xb5ca4000, PRAMIN = 0xb63b4000, FIFO = 0xb64a4000, CURSOR = 0x0,
PCIO0 = 0xb62a5000 <Address 0xb62a5000 out of bounds>,
PCIO = 0xb62a7000 <Address 0xb62a7000 out of bounds>,
PVIO = 0xb5d64000 <Address 0xb5d64000 out of bounds>,
PDIO0 = 0xb6325000 <Address 0xb6325000 out of bounds>,
PDIO = 0xb6327000 <Address 0xb6327000 out of bounds>, PRAMDAC = 0xb6326000,
AccelInfoRec = 0x824b0d8, CursorInfoRec = 0x0, DGAModes = 0x8249fb0,
numDGAModes = 40,
DGAactive = 0, DGAViewportStatus = 0, PointerMoved = 0, BlockHandler =
0x81304b0,
CloseScreen = 0xb6f93120 <XvCloseScreen>,
---Type <return> to continue, or q <return> to quit---
EnableDisableFBAccess = 0xb5c35e00 <XAAEnableDisableFBAccess>, accessEnabled
= 1, FBDev = 0,
Rotate = 0, CurrentLayout = {bitsPerPixel = 32, depth = 24, displayWidth =
3584, weight = {red = 8,
green = 8, blue = 8}, mode = 0x8220d48}, curFg = 0, curBg = 0, curImage =
{
0 <repeats 256 times>}, I2C = 0x821fc28, pInt = 0x0,
VideoTimerCallback = 0xb6f41fd0 <NVVideoTimerCallback>, DMAKickoffCallback =
0,
overlayAdaptor = 0x0, blitAdaptor = 0x8264930, videoKey = 66046, FlatPanel =
1, FPDither = 0,
Television = 0, CRTCnumber = 1, Options = 0x821efe8, alphaCursor = 1, DDCBase
= 54 '6',
twoHeads = 1, twoStagePLL = 1, fpScaler = 1, fpWidth = 1280, fpHeight = 1024,
fpVTotal = 1066,
fpSyncs = 268435473, usePanelTweak = 0, PanelTweak = 0, LVDS = 0, dmaPut =
3519, dmaCurrent = 3519,
dmaFree = 4644, dmaMax = 8191, dmaBase = 0xb5ba3000, currentRop = 3,
WaitVSyncPossible = 1,
BlendingPossible = 1, RandRRotation = 0, VBEDualhead = 1, pVbe = 0x821f770,
pVbeInfo = 0x821f9a0,
vbeMode = 3, vbeCRTC1Offset = 5120}
Now I fix it for my self with dirty hack:
src/nv_xaa.c:
void NVSync(ScrnInfoPtr pScrn)
{
NVPtr pNv = NVPTR(pScrn);
if(pNv->DMAKickoffCallback)
(*pNv->DMAKickoffCallback)(pScrn);
while(READ_GET(pNv) != pNv->dmaPut);
- while(pNv->PGRAPH[0x0700/4]);
+ int n = 65535;
+ while(pNv->PGRAPH[0x0700/4] && n-- > 0);
}
ProblemType: Bug
Architecture: i386
Date: Tue Sep 9 12:37:51 2008
DistroRelease: Ubuntu 8.04
Package: xserver-xorg-video-nv 1:2.1.8-1ubuntu1
PackageArchitecture: i386
ProcEnviron:
PATH=/home/username/bin:/home/username/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
LANG=ru_RU.UTF-8
SHELL=/bin/bash
SourcePackage: xserver-xorg-video-nv
Uname: Linux 2.6.24-19-generic i686
** Affects: xserver-xorg-video-nv (Ubuntu)
Importance: Undecided
Status: New
** Tags: apport-bug
--
xserver-xorg-video-nv driver hangs in NVSync when totem start play video
https://bugs.launchpad.net/bugs/268011
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs