Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
Since several extensions named their errors like "BadFoo", this patch
results in names like XCB_EXT_BAD_BAD_FOO, which is really awful. Those
extensions are already kind of awful, as they produce structure names
like xcb_ext_bad_foo_error_t, which is redundant.
A patch that removes "Bad" from the XML extension descriptions, while
maintaining API and ABI compatibility in XCB, is needed before this
patch can be released.
This reverts commit 158c9b6ba18b39f424bd524fceb66f3fec0d1616.
|
|
With this patch, `ico -threads 2` runs without deadlock.
Many thanks to Christoph Pfister <christophpfister@gmail.com> for
pointing out the problem, providing detailed analyses, explaining it to
me repeatedly until I understood what was going on, and proposing and
reviewing possible solutions.
Signed-off-by: Jamey Sharp <jamey@minilop.net>
Acked-by: Christoph Pfister <christophpfister@gmail.com>
|
|
This parallels the _xcb_lock_io and _xcb_unlock_io factoring.
|
|
But do still print a full backtrace, on platforms where that's
supported.
This commit follows the spirit of Novell's libxcb-sloppy-lock.diff.
I strongly opposed proposals like this one for a long time. Originally I
had a very good reason: libX11, when compiled to use XCB, would crash
soon after a locking correctness violation, so it was better to have an
informative assert failure than a mystifying crash soon after.
It took some time for me to realize that I'd changed the libX11
implementation (for unrelated reasons) so that it could survive most
invalid locking situations, as long as it wasn't actually being used
from multiple threads concurrently.
The other thing that has changed is that most of the code with incorrect
locking has now been fixed. The value of the assert is accordingly
lower.
However, remaining broken callers do need to be fixed. That's why libXCB
will still noisily print a stacktrace (if possible) on each assertion
failure, even when assert isn't actually invoked to abort() the program;
and that's why aborting is still default. This environment variable is
provided only for use as a temporary workaround for broken applications.
Signed-off-by: Jamey Sharp <jamey@minilop.net>
Acked-by: Josh Triplett <josh@freedesktop.org>
|
|
https://bugzilla.novell.com/show_bug.cgi?id=289007
This notion is used in a lot of scripts.
|
|
backtrace.
|
|
As you know there are some nasty libs / apps doing locking
incorrectly. In order to improve the information given to the user
when he encounters such a situation (people don't run apps in gdb
normally) I created the patch attached.
It's very non-intrusive (and affects only xlib/xcb, Josh told me on
irc that it could be useful for other areas too, personally I don't
think that it's really needed at other places ...).
Some same outputs and the discussion of them:
lxuser@pdln:/tmp$ ./main
Got a backtrace:
#0 /tmp/usr/lib/libxcb-xlib.so.0 [0xb7f9d728]
#1 /tmp/usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb7f9d861]
#2 ./test.so(function_a+0x11) [0xb7f9f3fd]
#3 ./test.so(function_b+0x11) [0xb7f9f410]
#4 ./main [0x80484a7]
#5 /lib/libc.so.6(__libc_start_main+0xdc) [0xb7e60ebc]
#6 ./main [0x80483f1]
main: xcb_xlib.c:82: xcb_xlib_unlock: Assertion `c->xlib.lock' failed.
Aborted
That's kinda the normal situation.
lxuser@pdln:/tmp$ ./main
Got a backtrace:
#0 /tmp/usr/lib/libxcb-xlib.so.0 [0xb7f90728]
#1 /tmp/usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb7f90861]
#2 /tmp/test.so [0xb7f923cd]
#3 /tmp/test.so(function_b+0x11) [0xb7f923e0]
#4 ./main [0x80484ab]
#5 /lib/libc.so.6(__libc_start_main+0xdc) [0xb7e53ebc]
#6 ./main [0x80483f1]
main: xcb_xlib.c:82: xcb_xlib_unlock: Assertion `c->xlib.lock' failed.
Aborted
There are two possible reasons that the name doesn't appear in #2:
a) a hidden symbol or a symbol with statical linkage in a library
b) a symbol in an app not compiled with -rdynamic.
But in both cases you still know _where_ the caller is.
Note that in this example test.so was compiled with
-fomit-frame-pointer; this isn't an issue as _one_ (= the caller)
stack trace is still valid (as long as you don't have the insane idea
to compile xcb with -fo-f-p).
Another issue that may appear is "tail call elimination" (some entries
are mysteriously missing; this is quite ugly, but you still get enough
information so that you can do something useful with the issue e.g. by
disassembling the relevant parts with gdb).
Signed-off-by: Jamey Sharp <jamey@minilop.net>
|
|
|
|
(Closes: #407376)
|
|
putenv() string must contain '='
environment failure test is invalid if argument is NULL
|
|
XS-Vcs-Browser, set distribution to unstable
* Incorporate NMU by Julien Cristau; thanks, Julien!
* Add XS-Vcs-Browser field to debian/control.
* Upload to unstable.
|
|
* Non-maintainer upload.
* libxcb1-dev needs a dependency on libpthread-stubs0-dev and versioned
dependencies on libxau-dev and libxdmcp-dev, because they are needed by
anything using xcb.pc (closes: #408409).
|
|
|
|
The previous constants remain for compatibility, but should be deprecated.
|
|
|
|
|
|
|
|
extensions with split names. Tested with diff and found no difference with
previous stylesheet header-file output.
|
|
for new attribute. Tested with diff and found no difference with
previous stylesheet header-file output.
|
|
The arguments of the requests are not found yet. Josh, can you look at it ?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
get the fix for bug 398327.
|
|
it in experimental.
|
|
|
|
files for these functions
|
|
|
|
|
|
Also set BUILD_DOCS in that branch. Now the disable-build-docs works
as expected.
|
|
Now at least enable_build_docs is set correctly.
|
|
putenv() string must contain '='
environment failure test is invalid if argument is NULL
|
|
|
|
xcb-xinerama.pc.in looked more like a generated .pc file; replace specific
instances of values provided by an invocation of configure with the general
substitution variables configure replaces.
(cherry picked from commit 98e2a5617ef1c9955b3b5553224c34f55c7c5d29)
|
|
(cherry picked from commit 3360d0c79e98cf6b7f30b2d84f117aea0a28595d)
|
|
|
|
|
|
xcb-xinerama.pc.in looked more like a generated .pc file; replace specific
instances of values provided by an invocation of configure with the general
substitution variables configure replaces.
|
|
|
|
version is found.
|
|
|
|
xcb. Fix a description of the default background of a window
|