Could it be that gdb was wrong in it's bt? There dosen't seem to be a select in that function.
--- Branden Robinson <[EMAIL PROTECTED]> wrote: > retitle 246643 libx11-6: _XPollfdCacheDel() select()s forever when > called by fglrx_dri.so > tag 246643 + moreinfo upstream help > thanks > > On Fri, Apr 30, 2004 at 01:48:16AM -0500, Mike Mestnik wrote: > > Package: libx11-6 > > Version: 4.3.0-7 > > Severity: normal > > > > (gdb) bt > > #0 0x403e3398 in select () from /lib/tls/libc.so.6 > > #1 0x4018de32 in _XPollfdCacheDel () from /usr/X11R6/lib/libX11.so.6 > > #2 0x4018eda1 in _XRead () from /usr/X11R6/lib/libX11.so.6 > > #3 0x4093c2d9 in s5943 () from > /usr/X11R6/lib/modules/dri/fglrx_dri.so > > #4 0x40950593 in s3197 () from > /usr/X11R6/lib/modules/dri/fglrx_dri.so > > #5 0x4094d984 in s3176 () from > /usr/X11R6/lib/modules/dri/fglrx_dri.so > > #6 0x4094ccff in s5118 () from > /usr/X11R6/lib/modules/dri/fglrx_dri.so > > #7 0x4094d02a in __driCreateScreen () from > > /usr/X11R6/lib/modules/dri/fglrx_dri.so > > #8 0x40123fda in AllocAndFetchScreenConfigs () from > /usr/X11R6/lib/libGL.so.1 > > > > I also got this bt with DRI installed, but they do not replace > libX11.so. > > (gdb) bt > > #0 0x4027d398 in select () from /lib/tls/libc.so.6 > > #1 0x40103e32 in _XPollfdCacheDel () from /usr/X11R6/lib/libX11.so.6 > > #2 0x40104da1 in _XRead () from /usr/X11R6/lib/libX11.so.6 > > #3 0x407dc2d9 in s5943 () from > /usr/X11R6/lib/modules/dri/fglrx_dri.so > > #4 0x407f0593 in s3197 () from > /usr/X11R6/lib/modules/dri/fglrx_dri.so > > #5 0x407ed984 in s3176 () from > /usr/X11R6/lib/modules/dri/fglrx_dri.so > > #6 0x407eccff in s5118 () from > /usr/X11R6/lib/modules/dri/fglrx_dri.so > > #7 0x407ed02a in __driCreateScreen () from /usr/X11R6/lib/libGL.so.1 > > Well, here are the sources to _XRead() and _XPollfdCacheDel(). Both > live in xc/lib/X11/XlibInt.c. > > /* > * _XRead - Read bytes from the socket taking into account incomplete > * reads. This routine may have to be reworked if int < long. > */ > int _XRead (dpy, data, size) > register Display *dpy; > register char *data; > register long size; > { > register long bytes_read; > #ifdef XTHREADS > int original_size = size; > #endif > > if ((dpy->flags & XlibDisplayIOError) || size == 0) > return 0; > ESET(0); > while ((bytes_read = _X11TransRead(dpy->trans_conn, data, (int)size)) > != size) { > > if (bytes_read > 0) { > size -= bytes_read; > data += bytes_read; > } > else if (ETEST()) { > if (_XWaitForReadable(dpy) == -2) > return -2; /* internal connection did XPutBackEvent */ > ESET(0); > } > #ifdef SUNSYSV > else if (ECHECK(0)) { > if (_XWaitForReadable(dpy) == -2) > return -2; /* internal connection did XPutBackEvent */ > } > #endif > else if (bytes_read == 0) { > /* Read failed because of end of file! */ > ESET(EPIPE); > _XIOError(dpy); > } > > else /* bytes_read is less than 0; presumably -1 */ { > /* If it's a system call interrupt, it's not an error. */ > if (!ECHECK(EINTR)) > _XIOError(dpy); > } > } > #ifdef XTHREADS > if (dpy->lock && dpy->lock->reply_bytes_left > 0) > { > dpy->lock->reply_bytes_left -= original_size; > if (dpy->lock->reply_bytes_left == 0) { > dpy->flags &= ~XlibDisplayReply; > UnlockNextReplyReader(dpy); > } > } > #endif /* XTHREADS*/ > return 0; > } > > /* ARGSUSED */ > void _XPollfdCacheDel(dpy, fd) > Display *dpy; > int fd; /* not used */ > { > #ifdef USE_POLL > struct pollfd *pfp = (struct pollfd *)dpy->filedes; > struct _XConnectionInfo *conni; > > /* just recalculate whole list */ > if (dpy->im_fd_length <= POLLFD_CACHE_SIZE) { > int loc = 1; > for (conni = dpy->im_fd_info; conni; conni=conni->next) { > pfp[loc].fd = conni->fd; > pfp[loc].events = POLLIN; > loc++; > } > } > #endif > } > > Would someone like to eyeball the above? > > -- > G. Branden Robinson | Humor is a rubber sword - it > allows > Debian GNU/Linux | you to make a point without > drawing > [EMAIL PROTECTED] | blood. > http://people.debian.org/~branden/ | -- Mary Hirsch > > ATTACHMENT part 2 application/pgp-signature name=signature.asc __________________________________ Do you Yahoo!? Win a $20,000 Career Makeover at Yahoo! HotJobs http://hotjobs.sweepstakes.yahoo.com/careermakeover