From deepayan.sarkar at gmail.com  Sun Nov 16 10:26:18 2008
From: deepayan.sarkar at gmail.com (Deepayan Sarkar)
Date: Sun, 16 Nov 2008 01:26:18 -0800
Subject: [Rd] Fw: alpha transparency crashes R
Message-ID: <eb555e660811160126u1138f44cr8a32fefaf4fb8d0a@mail.gmail.com>

I'm forwarding a bug report from Jeff Gove that didn't make it to the list.
-Deepayan

------- Original Message --------
Subject: 	alpha transparency crashes R
Date: 	Fri, 07 Nov 2008 14:32:27 -0500
From: 	jeff gove <jhgove at unh.edu>
To: 	r-bugs at r-project.org


I ran into a problem with R crashing when a certain number of
transparent objects (e.g., symbols) are sent to a PDF output device.
This has happened on R 2.71, 2.7.2 (Fedora 8 and Ububtu 8.04
platforms) and now 2.8.0 (I've only tried Fedora 8). The current
pertinent R system stats are...

R.version
               _
platform       x86_64-redhat-linux-gnu
arch           x86_64
os             linux-gnu
system         x86_64, linux-gnu
status
major          2
minor          8.0
year           2008
month          10
day            20
svn rev        46754
language       R
version.string R version 2.8.0 (2008-10-20)

The following small example program when run with n large enough
(e.g., n=1000) and transparency will crash R...

alphaBomb.r = function(n=100, wantAlpha=T) {
   df = data.frame(a=rnorm(n),b=runif(n))
   if(wantAlpha)
     alpha=runif(n)
   else
     alpha = 1
   j = xyplot(b~a, df, alpha=alpha, pch=19)
   print(j)
   trellis.device('pdf',file='alphaBomb.pdf',version='1.4')
   print(j)
   dev.off()
}

Please note that the crash seems to occur in the dev.off() component,
and that the file actually seems to get written out correctly.  The
trace of the bomb is found below, excluding the memory map. Please
also note that it may be somehow related to grid, as the following
code (supplied by Deepayan Sarkar) using base graphics does not crash
R, even with n=100000...

pdf()
n = 1000
plot(rnorm(n), rnorm(n), col = rgb(0, 0, 0, alpha = runif(n)), pch = 16)
dev.off()

The error trace from the above alphaBomb.r() code is...

R> alphaBomb.r(100)   #this is fine
X11cairo
       2

R> alphaBomb.r(1000,F) #also fine

R> alphaBomb.r(1000)
*** glibc detected *** /usr/lib64/R/bin/exec/R: double free or
corruption (!prev): 0x00000000032c1d90 ***
======= Backtrace: =========
/lib64/libc.so.6[0x3ee8c72832]
/lib64/libc.so.6(cfree+0x8c)[0x3ee8c75f2c]
/usr/lib64/R/library/grDevices/libs/grDevices.so[0x2aaab000b0fc]
/usr/lib64/R/lib/libR.so[0x3d1f48ddd3]
/usr/lib64/R/lib/libR.so[0x3d1f48e2dc]
/usr/lib64/R/lib/libR.so[0x3d1f4ec81c]
/usr/lib64/R/lib/libR.so(Rf_eval+0x42e)[0x3d1f4be8ae]
/usr/lib64/R/lib/libR.so[0x3d1f4bf572]
/usr/lib64/R/lib/libR.so(Rf_eval+0x42e)[0x3d1f4be8ae]
/usr/lib64/R/lib/libR.so(Rf_applyClosure+0x291)[0x3d1f4c0bf1]
/usr/lib64/R/lib/libR.so(Rf_eval+0x303)[0x3d1f4be783]
/usr/lib64/R/lib/libR.so[0x3d1f4bf572]
/usr/lib64/R/lib/libR.so(Rf_eval+0x42e)[0x3d1f4be8ae]
/usr/lib64/R/lib/libR.so(Rf_applyClosure+0x291)[0x3d1f4c0bf1]
/usr/lib64/R/lib/libR.so(Rf_eval+0x303)[0x3d1f4be783]
/usr/lib64/R/lib/libR.so(Rf_ReplIteration+0x188)[0x3d1f4dc878]
/usr/lib64/R/lib/libR.so[0x3d1f4dcb90]
/usr/lib64/R/lib/libR.so(run_Rmainloop+0x50)[0x3d1f4dcec0]
/usr/lib64/R/bin/exec/R(main+0x1b)[0x40082b]
/lib64/libc.so.6(__libc_start_main+0xf4)[0x3ee8c1e074]
/usr/lib64/R/bin/exec/R[0x400729]
======= Memory map: ========
etc...

Please note that R only crashes with PDF output; tiff, png and eps
(even though it doesn't accept transparency) all exit cleanly.

My version of glibc is 2.7.

Thanks, I hope that the problem is already resolved!

Jeff



[Rd] Fw: alpha transparency crashes R
Deepayan Sarkar