View Single Post
Old 07-16-07, 09:57 AM   #5
smp5
Registered User
 
Join Date: Sep 2006
Posts: 21
Default Re: Geforce FX 5500 with GNU/Linux quake4-demo artifacts

I've also noticed that basic OpenGL programs such as glxgears, and my own program, and other small ones that you can find with a websearch with names quark, cubes, stars work fine.

Its the more advanced programs like quake4-demo, openarena, and neverball which cause problems. I've pasted part of a neverball strace below, where it stalls.

Also, when leaving glxgears running and then launching one of the problematic full featured programs, although they both suffer the expected slowdown they at least run together with much greater stability compared to the problematic program running full bore on its own.

For the strace, you can see the read/poll is caught up on descriptor 4. So I went into the /prod/pid/fd directory for the neverball process to see that fd 4 points to ``4 -> socket:[50601]'', a unix domain socket. fd 6 corresponds to /dev/nvidiactl, and fd 7 to /dev/nvidia0. I ran ``netstat -n | grep 50601'' and it just shows STREAM CONNECTED. I'm not sure if this fd 4 ultimately refers to an nvidia /dev descriptor that communicates with the nvidia kernel module, or if the neverball application is talking to its subprocess/thread, which pstree shows as having one. The strace shows how the stall on the poll call happens just after the nvidia fd 6 and fd 7 descriptors have done some work, possibly writing the video frame.

--

sched_yield() = 0
sched_yield() = 0
sched_yield() = 0

-- [snipped hundreds of above lines]

sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
gettimeofday({1184594182, 815212}, NULL) = 0
gettimeofday({1184594182, 816212}, NULL) = 0
ioctl(6, 0xc0104629, 0xbfccd430) = 0
--- SIGWINCH (Window changed) @ 0 (0) ---
write(4, "\220\16\2\0\0\0\0\0", 8) = 8
read(4, 0xbfcbbcc8, 32) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(4, "\1\306(\0\374E\0\0\360\27\1\0\0\0\0\0\204\306\35\ 10@\211"..., 32) = 32
read(4, "\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\1P\0\300 \0\0\0"..., 71664) = 16160
read(4, 0xbfcbfc30, 55504) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0"..., 55504) = 16192
read(4, 0xbfcc3b70, 39312) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0"..., 39312) = 16192
read(4, 0xbfcc7ab0, 23120) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0"..., 23120) = 16192
read(4, 0xbfccb9f0, 6928) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0"..., 6928) = 6928
ioctl(6, 0xc020464f, 0xbfcbbc90) = 0
munmap(0xb7f50000, 4096) = 0
ioctl(6, 0xc030464e, 0xbfcbbc64) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 7, 0xf5001) = 0xb7f50000
nanosleep({0, 1000000}, {0, 1000000}) = 0
select(4, [3], NULL, NULL, {0, 0}) = 1 (in [3], left {0, 0})
ioctl(3, FIONREAD, [3744]) = 0
read(3, "\6\0\207\0\311\30\20\0N\2\0\0\20\0 \5\0\0\0\0\0\0\377\377"..., 2048) = 2048
select(4, [3], NULL, NULL, {0, 0}) = 1 (in [3], left {0, 0})
ioctl(3, FIONREAD, [1696]) = 0
read(3, "\6\0\207\0\361!\20\0N\2\0\0\20\0 \5\0\0\0\0\f\0\6\0\7\0"..., 1696) = 1696
select(4, [3], NULL, NULL, {0, 0}) = 0 (Timeout)
select(4, [3], NULL, NULL, {0, 0}) = 0 (Timeout)
select(4, [3], NULL, NULL, {0, 0}) = 0 (Timeout)

-- [snipped dozens of above select lines]

select(4, [3], NULL, NULL, {0, 0}) = 0 (Timeout)
select(4, [3], NULL, NULL, {0, 0}) = 0 (Timeout)
gettimeofday({1184594201, 14011}, NULL) = 0
gettimeofday({1184594201, 18010}, NULL) = 0
ioctl(6, 0xc0104629, 0xbfccd1bc) = 0
ioctl(6, 0xc0104629, 0xbfccd1d4) = 0
ioctl(6, 0xc0104629, 0xbfccd1d4) = 0
ioctl(6, 0xc0104629, 0xbfccd1d4) = 0
ioctl(6, 0xc0104629, 0xbfccd1d4) = 0
ioctl(7, 0xc0204638, 0xbfccd208) = 0
write(4, "\220\17\t\0\0\0\0\0\200\0\0\0\1\0\0\0h\0\320\301\ 3\0\357"..., 36) = 36
read(4, 0xbfcbb994, 32) = -1 EAGAIN (Resource temporarily unavailable)
poll(
smp5 is offline   Reply With Quote