[Rd] 'tcltk' crashes related to event-loops (PR#14187)
landronimirc at gmail.com
landronimirc at gmail.com
Sat Jan 16 14:35:11 CET 2010
--0016e6d464cff5d753047d482362
Content-Type: text/plain; charset=UTF-8
I am experiencing some regular crashes on Debian Linux, 32- and
64-bit, involving 'tcltk' and 'cairoDevice' or 'RGtk2'. They make it
very difficult to use tcltk interfaces (Rcmdr) and GTK+ ones (rattle,
playwith, etc.) in the same R session.
NOTE: Before you continue, please read NOTE2 located towards the end
of the message.
To reproduce you need to load 'tcltk' and 'cairoDevice' in the same R
--vanilla session. When executing the following in that order, in a
new terminal window:
require(tcltk)
require(cairoDevice)
ReturnVal <- tkmessageBox(title="Greetings from R
TclTk",message="Hello, world!",icon="info",type="ok")
### click "ok"
I get a crash (confirmed by Dirk---copied---on his Debian system) with
the following message (see R-tcltk-cairoDevice.txt):
> The program 'R' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadWindow (invalid Window parameter)'.
(Details: serial 317 error_code 3 request_code 15 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
The crash and error are very similar in case of 'RGtk2':
require(tcltk)
require(RGtk2)
ReturnVal <- tkmessageBox(title="Greetings from R
TclTk",message="Hello, world!",icon="info",type="ok")
### click "ok" to get the crash
There are other ways to obtain the same error messages, but without
concurrent crashes.
liviu at debian-liv:~$ R --vanilla
require(tcltk)
fix(iris) ### click "quit"
ReturnVal <- tkmessageBox(title="Greetings from R
TclTk",message="Hello, world!",icon="info",type="ok")
### click "ok"
ReturnVal <- tkmessageBox(title="Greetings from R
TclTk",message="Hello, world!",icon="info",type="ok")
### click "ok"; to get the warnings(), this needs done twice
Then I get:
"There were 16 warnings (use warnings() to see them)"
> warnings()
Warning messages:
1: In structure(.External("dotTclObjv", objv, PACKAGE = "tcltk"), ... :
X11 protocol error: BadWindow (invalid Window parameter)
[.. and 16 other same messages ..]
Yet another way is via Rcmdr, with a slightly different message:
liviu at debian-liv:~$ R --vanilla
require(Rcmdr)
data(iris)
### select "iris" as active dataset
### click "edit" button, then "quit" the editor
### click "view" button, then close the viewer
### close Rcmdr and about 16 such errors will pop up
Warning in structure(.External("dotTclObjv", objv, PACKAGE = "tcltk"),
class = "tclObj") :
X11 protocol error: BadWindow (invalid Window parameter)
Inverting the order of the calls, say,
require(cairoDevice)
require(tcltk)
sporadically generates tcltk freezes, with a different error message.
I will submit a separate bug report on this.
NOTE1 I've already contacted in private several R developers (all
copied), and below are some comments.
On Fri, Jan 8, 2010 at 2:41 PM, Michael Lawrence
<lawrence.michael at gene.com> wrote:
> From the looks of it, the problem is on the tcltk side. When you load RGtk2,
> cairoDevice, or probably any package that links to GTK+ (well technically
> Gdk), the X11 error is handled differently. Yes, the error occurs (is
> reported?) sooner, which I can't explain, but again there's obviously
> something going wrong in tcltk.
On 1/11/10, Peter Dalgaard <P.Dalgaard at biostat.ku.dk> wrote:
> The warnings have been puzzling me for quite a while in "pure" tcltk
> applications. They don't usually cause a crash, though, and the --sync
> bit in the message suggests that this comes from error handling outside
> of the tcltk package (R doesn't have a --sync option).
>
> Clearly, this sort of error comes from deleting windows with pending
> messages or sending messages to deleted windows, but I never got a
> handle on how to debug it. At the root of it is of course the
> unconventional way in which the event loop is hacked into the keyboard loop.
>
NOTE2 It seems that I found a circumstance that might help to
explain/track down the underlying issue.
Test case 1:
- make sure no R session is running
- open an R --vanilla session
- open a second R --vanilla session in a different terminal/tab
- run any of the crash-generating code (see above)
- you might *not* get the crash
Test case 2:
- make sure no R session is running
- open an R --vanilla session
- require(tcltk)
- open a second R --vanilla session in a different terminal/tab
- run any of the crash-generating code (see above)
- you should get a crash
It seems that the "tcltk with GTK" crashes occur when another R
instance has tcltk loaded.
SYSTEM INFO
liviu at debian-liv:~$ uname -a
Linux debian-liv 2.6.30-2-amd64 #1 SMP Mon Dec 7 05:21:45 UTC 2009
x86_64 GNU/Linux
liviu at debian-liv:~$ cat /etc/apt/sources.list | grep cran2deb
deb http://debian.cran.r-project.org/cran2deb/debian-amd64/ testing/
> sessionInfo()
R version 2.10.1 (2009-12-14)
x86_64-pc-linux-gnu
locale:
[1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8
[5] LC_MONETARY=C LC_MESSAGES=en_GB.UTF-8
[7] LC_PAPER=en_GB.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] tcltk stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] cairoDevice_2.10
> version
_
platform x86_64-pc-linux-gnu
arch x86_64
os linux-gnu
system x86_64, linux-gnu
status
major 2
minor 10.1
year 2009
month 12
day 14
svn rev 50720
language R
version.string R version 2.10.1 (2009-12-14)
--0016e6d464cff5d753047d482362
Content-Type: text/plain; charset=US-ASCII; name="R-tcltk-cairoDevice.txt"
Content-Disposition: attachment; filename="R-tcltk-cairoDevice.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g4icq5rx1
bGl2aXVAZGViaWFuLWxpdjp+JCBSIC0tdmFuaWxsYQoKUiB2ZXJzaW9uIDIuMTAuMSAoMjAwOS0x
Mi0xNCkKQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBSIEZvdW5kYXRpb24gZm9yIFN0YXRpc3RpY2Fs
IENvbXB1dGluZwpJU0JOIDMtOTAwMDUxLTA3LTAKClIgaXMgZnJlZSBzb2Z0d2FyZSBhbmQgY29t
ZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLgpZb3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0
cmlidXRlIGl0IHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4KVHlwZSAnbGljZW5zZSgpJyBvciAn
bGljZW5jZSgpJyBmb3IgZGlzdHJpYnV0aW9uIGRldGFpbHMuCgogIE5hdHVyYWwgbGFuZ3VhZ2Ug
c3VwcG9ydCBidXQgcnVubmluZyBpbiBhbiBFbmdsaXNoIGxvY2FsZQoKUiBpcyBhIGNvbGxhYm9y
YXRpdmUgcHJvamVjdCB3aXRoIG1hbnkgY29udHJpYnV0b3JzLgpUeXBlICdjb250cmlidXRvcnMo
KScgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kCidjaXRhdGlvbigpJyBvbiBob3cgdG8gY2l0ZSBS
IG9yIFIgcGFja2FnZXMgaW4gcHVibGljYXRpb25zLgoKVHlwZSAnZGVtbygpJyBmb3Igc29tZSBk
ZW1vcywgJ2hlbHAoKScgZm9yIG9uLWxpbmUgaGVscCwgb3IKJ2hlbHAuc3RhcnQoKScgZm9yIGFu
IEhUTUwgYnJvd3NlciBpbnRlcmZhY2UgdG8gaGVscC4KVHlwZSAncSgpJyB0byBxdWl0IFIuCgo+
IHJlcXVpcmUodGNsdGspCkxvYWRpbmcgcmVxdWlyZWQgcGFja2FnZTogdGNsdGsKTG9hZGluZyBU
Y2wvVGsgaW50ZXJmYWNlIC4uLiBkb25lCj4gcmVxdWlyZShjYWlyb0RldmljZSkKTG9hZGluZyBy
ZXF1aXJlZCBwYWNrYWdlOiBjYWlyb0RldmljZQpXYXJuaW5nIG1lc3NhZ2U6CnBhY2thZ2UgJ2Nh
aXJvRGV2aWNlJyB3YXMgYnVpbHQgdW5kZXIgUiB2ZXJzaW9uIDIuOS4wIGFuZCBoZWxwIG1heSBu
b3Qgd29yayBjb3JyZWN0bHkgCj4gUmV0dXJuVmFsIDwtIHRrbWVzc2FnZUJveCh0aXRsZT0iR3Jl
ZXRpbmdzIGZyb20gUiBUY2xUayIsbWVzc2FnZT0iSGVsbG8sIHdvcmxkISIsaWNvbj0iaW5mbyIs
dHlwZT0ib2siKQo+ICMjIyBjbGljayAib2siIGFuZCBnZXQgYSBjcmFzaAo+IFRoZSBwcm9ncmFt
ICdSJyByZWNlaXZlZCBhbiBYIFdpbmRvdyBTeXN0ZW0gZXJyb3IuClRoaXMgcHJvYmFibHkgcmVm
bGVjdHMgYSBidWcgaW4gdGhlIHByb2dyYW0uClRoZSBlcnJvciB3YXMgJ0JhZFdpbmRvdyAoaW52
YWxpZCBXaW5kb3cgcGFyYW1ldGVyKScuCiAgKERldGFpbHM6IHNlcmlhbCAzMTcgZXJyb3JfY29k
ZSAzIHJlcXVlc3RfY29kZSAxNSBtaW5vcl9jb2RlIDApCiAgKE5vdGUgdG8gcHJvZ3JhbW1lcnM6
IG5vcm1hbGx5LCBYIGVycm9ycyBhcmUgcmVwb3J0ZWQgYXN5bmNocm9ub3VzbHk7CiAgIHRoYXQg
aXMsIHlvdSB3aWxsIHJlY2VpdmUgdGhlIGVycm9yIGEgd2hpbGUgYWZ0ZXIgY2F1c2luZyBpdC4K
ICAgVG8gZGVidWcgeW91ciBwcm9ncmFtLCBydW4gaXQgd2l0aCB0aGUgLS1zeW5jIGNvbW1hbmQg
bGluZQogICBvcHRpb24gdG8gY2hhbmdlIHRoaXMgYmVoYXZpb3IuIFlvdSBjYW4gdGhlbiBnZXQg
YSBtZWFuaW5nZnVsCiAgIGJhY2t0cmFjZSBmcm9tIHlvdXIgZGVidWdnZXIgaWYgeW91IGJyZWFr
IG9uIHRoZSBnZGtfeF9lcnJvcigpIGZ1bmN0aW9uLikK
--0016e6d464cff5d753047d482362--
More information about the R-devel
mailing list