Mac で RGtk2 を使ってみようとして挫折した

ふと RGtk2 を使ってみたいと思い、公式ページのサンプルを動かせるようにしようと思ったんですができませんでした。
ハマりポイントがたくさんありすぎてあとちょっとのところまで行くのでさえ大変だったんで、他の方がエラーメッセージでググった時に解決の糸口になればと思い備忘録を載せたいと思います。

環境

  • Mac OS X 10.6.8
  • R 2.15.0
  • gtk+ 2.24.6, 2.24.11
  • pango 1.30.1

インストール手順

gtk+ のインストール

Homebrew でインストールします。自分の場合、ここはすんなり行きました。(2.24.6 が既に入っていました)

$ brew install gtk+

次のコマンドを実行してエラーにならないことを確認します。

$ pkg-config gtk+-2.0 --libs --cflags
-D_REENTRANT -I/usr/X11/include/cairo ...

次のようにエラーになった場合は PKG_CONFIG_PATH の問題が考えられます。

$ pkg-config gtk+-2.0 --libs --cflags
Package cairo was not found in the pkg-config search path.
Perhaps you should add the directory containing `cairo.pc'
to the PKG_CONFIG_PATH environment variable
Package 'cairo', required by 'Pango Cairo', not found

/usr/X11/lib/pkgconfig を PKG_CONFIG_PATH に追加して再度実行してみてください。

$ export PKG_CONFIG_PATH=/usr/X11/lib/pkgconfig:$PKG_CONFIG_PATH

ちなみに、上記エラーを放置した状態で RGtk2 をインストールしようとすると gtk+ をインストールしているはずが次のように “checking for GTK… no” となってインストールに失敗します。

> install.packages("RGtk2")
trying URL 'http://cran.md.tsukuba.ac.jp/src/contrib/RGtk2_2.20.25.tar.gz'
Content type 'application/x-gzip' length 2784794 bytes (2.7 Mb)
opened URL
==================================================
downloaded 2.7 Mb

* installing *source* package ‘RGtk2’ ...
** package ‘RGtk2’ successfully unpacked and MD5 sums checked
checking for pkg-config... /usr/local/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for INTROSPECTION... no
checking for GTK... no
configure: error: GTK version 2.8.0 required
ERROR: configuration failed for package ‘RGtk2’
* removing ‘/usr/local/Cellar/r/2.15.0/R.framework/Versions/2.15/Resources/library/RGtk2’
* restoring previous ‘/usr/local/Cellar/r/2.15.0/R.framework/Versions/2.15/Resources/library/RGtk2’

The downloaded source packages are in
	‘/private/var/folders/PJ/PJZlSDgCGLaa7w4IKx3MxU+++TI/-Tmp-/Rtmprsju4V/downloaded_packages’
Warning message:
In install.packages("RGtk2") :
  installation of package ‘RGtk2’ had non-zero exit status

gtk+ を使ったサンプルが動くことを確認します。

// hellow_gtk.c
#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *label;

    gtk_init(&argc, &argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    label = gtk_label_new("Hello World!\n");
    gtk_container_add(GTK_CONTAINER(window), label);

    gtk_widget_show(label);
    gtk_widget_show  (window);

    gtk_main ();

    return(0);
}

コンパイル&実行します。

$ gcc -o hello_gtk hello_gtk.c $(pkg-config gtk+-2.0 --libs --cflags)
./hello_gtk
Xlib:  extension "RANDR" missing on display "/tmp/launch-tHpkdy/org.x:0".

X11 が起動して “Hello World!” が表示されていれば成功です。
変な warning が気になりますが、ここにあるように、Snow Leopard の X11 server ではこの warning が出るのは仕方ないらしいです。

ここでもし次のようなエラーが出れば、文字通り /usr/local/lib/libpixman-1.0.dylib が存在しないのが原因なのでリンクを張る必要があります。

$ ./hello_gtk 
dyld: Library not loaded: /usr/local/lib/libpixman-1.0.dylib
  Referenced from: /usr/local/opt/cairo/lib/libcairo.2.dylib
  Reason: image not found

次のコマンドを実行すればリンクが張れます。

$ brew link pixman

ちなみに、上記エラーを放置した状態で RGtk2 をロードしようとすると gtk+ のインストールを促されます。

> library(RGtk2)
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/usr/local/Cellar/r/2.15.0/R.framework/Versions/2.15/Resources/library/RGtk2/libs/RGtk2.so':
  dlopen(/usr/local/Cellar/r/2.15.0/R.framework/Versions/2.15/Resources/library/RGtk2/libs/RGtk2.so, 6): Library not loaded: /usr/local/lib/libpixman-1.0.dylib
  Referenced from: /usr/local/opt/cairo/lib/libcairo.2.dylib
  Reason: image not found
Loading Tcl/Tk interface ... done

ところで、リンクを張っていない(ファイルが存在しない)状態で Homebrew で cairo をインストールしても次のように /usr/local/lib/libpixman-1.0.dylib にリンクされているのが甚だ疑問なんですが・・・そういうものなんですか?

$ otool -L /usr/local/opt/cairo/lib/libcairo.2.dylib
/usr/local/opt/cairo/lib/libcairo.2.dylib:
	/usr/local/opt/cairo/lib/libcairo.2.dylib (compatibility version 11203.0.0, current version 11203.2.0)
	/usr/local/lib/libpixman-1.0.dylib (compatibility version 27.0.0, current version 27.2.0)
	/usr/X11/lib/libfontconfig.1.dylib (compatibility version 6.0.0, current version 6.3.0)
	/usr/X11/lib/libfreetype.6.dylib (compatibility version 14.0.0, current version 14.2.0)
	/usr/X11/lib/libpng12.0.dylib (compatibility version 47.0.0, current version 47.0.0)
	/usr/X11/lib/libXrender.1.dylib (compatibility version 5.0.0, current version 5.0.0)
	/usr/X11/lib/libX11.6.dylib (compatibility version 9.0.0, current version 9.0.0)
	/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 38.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.44.0)

最後に、RGtk2 をインストールします。

$ R
> install.packages("RGtk2")

以上のインストール手順で、RGtk2 を使って Hello World を実行することはできるはずです。demo も動くと思います。

cairoDevice が使えない!

目標は公式ページにある次のようなサンプルを動かすことだったんですが、結局できませんでした。

> library(RGtk2)
> library(cairoDevice)
> win = gtkWindow()
> da = gtkDrawingArea()
> win$add(da)
> asCairoDevice(da)
> plot(1:10)

最初に遭遇したクラッシュは次のような感じです。gtk+ のバージョンは 2.24.6 です。

$ ulimit -c unlimited
$ R
> library(RGtk2)
Xlib:  extension "RANDR" missing on display "/tmp/launch-tHpkdy/org.x:0".
> library(cairoDevice)
> win = gtkWindow()
> da = gtkDrawingArea()
> win$add(da)
> asCairoDevice(da)

(R:62460): Pango-CRITICAL **: pango_context_get_metrics: assertion `PANGO_IS_CONTEXT (context)' failed

(R:62460): Pango-CRITICAL **: pango_font_metrics_get_ascent: assertion `metrics != NULL' failed

(R:62460): Pango-CRITICAL **: pango_font_metrics_get_descent: assertion `metrics != NULL' failed

(R:62460): Pango-CRITICAL **: pango_font_metrics_get_approximate_char_width: assertion `metrics != NULL' failed
[1] TRUE
> plot(1:10)

 *** caught segfault ***
address 0x10, cause 'memory not mapped'

Traceback:
 1: axis(side = side, at = at, labels = labels, ...)
 2: Axis.default(...)
 3: Axis(...)
 4: localAxis(if (is.null(y)) xy$x else x, side = 1, ...)
 5: plot.default(1:10)
 6: plot(1:10)

Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Selection: 1
aborting ...
Segmentation fault (core dumped)

backtrace は次のような感じです。

$ gdb R /cores/core.62460
...
(gdb) bt
#0  0x0000000104fd3fce in cairo_get_target ()
#1  0x00000001027e9475 in pango_cairo_create_context ()
#2  0x00000001027e94ac in pango_cairo_create_layout ()
#3  0x000000010558a8cd in layoutText ()
#4  0x000000010558a935 in text_extents ()
#5  0x000000010558abaa in Cairo_StrWidth ()
#6  0x0000000100076160 in GEStrWidth ()
#7  0x00000001000af780 in Rf_GStrWidth ()
#8  0x0000000100106ad5 in do_axis ()
#9  0x00000001000d6447 in do_internal ()
#10 0x000000010008cc28 in bcEval ()
#11 0x0000000100093b0f in Rf_eval ()
#12 0x00000001000983d5 in Rf_applyClosure ()
#13 0x000000010008cc55 in bcEval ()
#14 0x0000000100093b0f in Rf_eval ()
#15 0x00000001000983d5 in Rf_applyClosure ()
#16 0x00000001000d9123 in Rf_usemethod ()
#17 0x00000001000d9456 in do_usemethod ()
#18 0x000000010008cf4d in bcEval ()
#19 0x0000000100093b0f in Rf_eval ()
#20 0x00000001000983d5 in Rf_applyClosure ()
#21 0x000000010008cc55 in bcEval ()
#22 0x0000000100093b0f in Rf_eval ()
#23 0x00000001000983d5 in Rf_applyClosure ()
#24 0x000000010008cc55 in bcEval ()
#25 0x0000000100093b0f in Rf_eval ()
#26 0x00000001000983d5 in Rf_applyClosure ()
#27 0x00000001000d9123 in Rf_usemethod ()
#28 0x00000001000d9456 in do_usemethod ()
#29 0x000000010008cf4d in bcEval ()
#30 0x0000000100093b0f in Rf_eval ()
#31 0x00000001000983d5 in Rf_applyClosure ()
#32 0x0000000100093f94 in Rf_eval ()
#33 0x00000001000c5e51 in Rf_ReplIteration ()
#34 0x00000001000c5fca in R_ReplConsole ()
#35 0x00000001000c648c in run_Rmainloop ()
#36 0x0000000100000e8b in main ()

cairo_get_target で落ちているようです。そもそも、asCairoDevice のところで出ている “pango_context_get_metrics: assertion `PANGO_IS_CONTEXT (context)’ failed” という warning が気になります。
これは pango-context.c で定義されている pango_context_get_metrics で context としておかしな値が渡されたことを意味しています。g_return_val_if_fail のところです。

PangoFontMetrics *
pango_context_get_metrics (PangoContext                 *context,
			   const PangoFontDescription   *desc,
			   PangoLanguage                *language)
{
  PangoFontset *current_fonts = NULL;
  PangoFontMetrics *metrics;
  const char *sample_str;
  GList *items;

  g_return_val_if_fail (PANGO_IS_CONTEXT (context), NULL);

  if (!desc)
    desc = context->font_desc;

  if (!language)
    language = context->language;

  current_fonts = pango_font_map_load_fontset (context->font_map, context, desc, language);
  metrics = get_base_metrics (current_fonts);

  sample_str = pango_language_get_sample_string (language);
  items = itemize_with_font (context, sample_str, 0, strlen (sample_str), desc);

  update_metrics_from_items (metrics, language, sample_str, items);

  g_list_foreach (items, (GFunc)pango_item_free, NULL);
  g_list_free (items);

  g_object_unref (current_fonts);

  return metrics;
}

というわけで、cairoDevice が怪しいです。cairoDevice 単独で使ってみると見事に落ちました。

> library(cairoDevice)
Xlib:  extension "RANDR" missing on display "/tmp/launch-tHpkdy/org.x:0".
> Cairo()

(R:62510): Pango-CRITICAL **: pango_context_get_metrics: assertion `PANGO_IS_CONTEXT (context)' failed

(R:62510): Pango-CRITICAL **: pango_font_metrics_get_ascent: assertion `metrics != NULL' failed

(R:62510): Pango-CRITICAL **: pango_font_metrics_get_descent: assertion `metrics != NULL' failed

(R:62510): Pango-CRITICAL **: pango_font_metrics_get_approximate_char_width: assertion `metrics != NULL' failed
> plot(1:10)

 *** caught segfault ***
address 0x10, cause 'memory not mapped'

Traceback:
 1: axis(side = side, at = at, labels = labels, ...)
 2: Axis.default(...)
 3: Axis(...)
 4: localAxis(if (is.null(y)) xy$x else x, side = 1, ...)
 5: plot.default(1:10)
 6: plot(1:10)

Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Selection: 1
aborting ...
Segmentation fault (core dumped)

backtrace は次のように同じになりました。(アドレスまで一緒になるものなんですか?)

(gdb) bt
#0  0x0000000104a12fce in cairo_get_target ()
#1  0x00000001027da475 in pango_cairo_create_context ()
#2  0x00000001027da4ac in pango_cairo_create_layout ()
#3  0x00000001027ac8cd in layoutText ()
#4  0x00000001027ac935 in text_extents ()
#5  0x00000001027acbaa in Cairo_StrWidth ()
#6  0x0000000100076160 in GEStrWidth ()
#7  0x00000001000af780 in Rf_GStrWidth ()
#8  0x0000000100106ad5 in do_axis ()
#9  0x00000001000d6447 in do_internal ()
#10 0x000000010008cc28 in bcEval ()
#11 0x0000000100093b0f in Rf_eval ()
#12 0x00000001000983d5 in Rf_applyClosure ()
#13 0x000000010008cc55 in bcEval ()
#14 0x0000000100093b0f in Rf_eval ()
#15 0x00000001000983d5 in Rf_applyClosure ()
#16 0x00000001000d9123 in Rf_usemethod ()
#17 0x00000001000d9456 in do_usemethod ()
#18 0x000000010008cf4d in bcEval ()
#19 0x0000000100093b0f in Rf_eval ()
#20 0x00000001000983d5 in Rf_applyClosure ()
#21 0x000000010008cc55 in bcEval ()
#22 0x0000000100093b0f in Rf_eval ()
#23 0x00000001000983d5 in Rf_applyClosure ()
#24 0x000000010008cc55 in bcEval ()
#25 0x0000000100093b0f in Rf_eval ()
#26 0x00000001000983d5 in Rf_applyClosure ()
#27 0x00000001000d9123 in Rf_usemethod ()
#28 0x00000001000d9456 in do_usemethod ()
#29 0x000000010008cf4d in bcEval ()
#30 0x0000000100093b0f in Rf_eval ()
#31 0x00000001000983d5 in Rf_applyClosure ()
#32 0x0000000100093f94 in Rf_eval ()
#33 0x00000001000c5e51 in Rf_ReplIteration ()
#34 0x00000001000c5fca in R_ReplConsole ()
#35 0x00000001000c648c in run_Rmainloop ()
#36 0x0000000100000e8b in main ()

そもそも pango のサンプルが動かないんじゃないかと思って、こちらのページのサンプルコードを試してみました。

// cairosimple.c
#include <math.h>
#include <pango/pangocairo.h>

static void
draw_text (cairo_t *cr)
{
#define RADIUS 150
#define N_WORDS 10
#define FONT "Sans Bold 27"

  PangoLayout *layout;
  PangoFontDescription *desc;
  int i;

  /* Center coordinates on the middle of the region we are drawing
   */
  cairo_translate (cr, RADIUS, RADIUS);

  /* Create a PangoLayout, set the font and text */
  layout = pango_cairo_create_layout (cr);
  
  pango_layout_set_text (layout, "Text", -1);
  desc = pango_font_description_from_string (FONT);
  pango_layout_set_font_description (layout, desc);
  pango_font_description_free (desc);

  /* Draw the layout N_WORDS times in a circle */
  for (i = 0; i < N_WORDS; i++)
    {
      int width, height;
      double angle = (360. * i) / N_WORDS;
      double red;

      cairo_save (cr);

      /* Gradient from red at angle == 60 to blue at angle == 240 */
      red   = (1 + cos ((angle - 60) * G_PI / 180.)) / 2;
      cairo_set_source_rgb (cr, red, 0, 1.0 - red);

      cairo_rotate (cr, angle * G_PI / 180.);
    
      /* Inform Pango to re-layout the text with the new transformation */
      pango_cairo_update_layout (cr, layout);
    
      pango_layout_get_size (layout, &width, &height);
      cairo_move_to (cr, - ((double)width / PANGO_SCALE) / 2, - RADIUS);
      pango_cairo_show_layout (cr, layout);

      cairo_restore (cr);
    }

  /* free the layout object */
  g_object_unref (layout);
}

int main (int argc, char **argv)
{
  cairo_t *cr;
  char *filename;
  cairo_status_t status;
  cairo_surface_t *surface;

  if (argc != 2)
    {
      g_printerr ("Usage: cairosimple OUTPUT_FILENAME\n");
      return 1;
    }

  filename = argv[1];

  surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
					2 * RADIUS, 2 * RADIUS);
  cr = cairo_create (surface);
				  

  cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
  cairo_paint (cr);
  draw_text (cr);
  cairo_destroy (cr);
  
  status = cairo_surface_write_to_png (surface, filename);
  cairo_surface_destroy (surface);

  if (status != CAIRO_STATUS_SUCCESS)
    {
      g_printerr ("Could not save png to '%s'\n", filename);
      return 1;
    }

  return 0;
}

コンパイル&実行してみます。

$ gcc -g -o cairosimple cairosimple.c $(pkg-config pangocairo --cflags --libs)
$ ./cairosimple text.png
Segmentation fault (core dumped)

落ちました・・・。R と同じところで落ちてるみたいです。

(gdb) bt
#0  0x000000010026dfce in cairo_get_target ()
#1  0x0000000100004475 in pango_cairo_create_context ()
#2  0x00000001000044ac in pango_cairo_create_layout ()
#3  0x000000010000095b in draw_text (cr=0x10070ddf0) at cairosimple.c:21
#4  0x0000000100000c5d in main (argc=2, argv=0x7fff5fbfecf8) at cairosimple.c:80

デバッグオプションを付けて pango をビルドしたいと思ったんで、Homebrew と同じバージョンのものを自前で同じような感じでビルドしてインストールしてみました。

$ wget http://ftp.gnome.org/pub/GNOME/sources/pango/1.30/pango-1.30.1.tar.xz
$ gtar xf pango-1.30.1.tar.xz 
$ ./configure --enable-debug=yes --disable-dependency-tracking --disable-introspection --with-x
...
$ make
$ make install

再度サンプルを実行してみます。

$ gcc -g -o cairosimple cairosimple.c $(pkg-config pangocairo --cflags --libs)
$ ./cairosimple text.png

正常に出力されたようです・・・。意味不明です。
これなら R でもうまく動くかなぁと思って試してみます。

> library(cairoDevice)
Xlib:  extension "RANDR" missing on display "/tmp/launch-tHpkdy/org.x:0".
> Cairo()

(R:77993): Pango-CRITICAL **: pango_context_get_metrics: assertion `PANGO_IS_CONTEXT (context)' failed

(R:77993): Pango-CRITICAL **: pango_font_metrics_get_ascent: assertion `metrics != NULL' failed

(R:77993): Pango-CRITICAL **: pango_font_metrics_get_descent: assertion `metrics != NULL' failed

(R:77993): Pango-CRITICAL **: pango_font_metrics_get_approximate_char_width: assertion `metrics != NULL' failed
> plot(1:10)

クラッシュしませんが、次のように Index という文字しか表示されません・・・。
20121014134348

なんかよくわからなかったんで gtk+ のバージョンを上げたら直るかな?と思い、Homebrew を update して 2.24.11 に上げたら次のような感じでクラッシュします。

> library(cairoDevice)
Xlib:  extension "RANDR" missing on display "/tmp/launch-tHpkdy/org.x:0".
> Cairo()

 *** caught segfault ***
address 0x375000001a0, cause 'memory not mapped'

Traceback:
 1: .C("do_Cairo", as.numeric(width), as.numeric(height), as.numeric(pointsize),     as.character(surface_info), PACKAGE = "cairoDevice")
 2: Cairo()

Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Selection: 1
aborting ...
Segmentation fault (core dumped)

backtrace は次のようになっていました。

(gdb) bt
#0  0x0000000104274341 in _cairo_gstate_save ()
#1  0x0000000104271048 in cairo_save ()
#2  0x00000001027ac167 in initDevice ()
#3  0x00000001027ac1db in realize_event ()
#4  0x000000010441d9e6 in g_closure_invoke ()
#5  0x000000010442c0de in signal_emit_unlocked_R ()
#6  0x000000010442d03d in g_signal_emit_valist ()
#7  0x000000010442d62d in g_signal_emit ()
#8  0x0000000103ddbe7d in gtk_widget_realize ()
#9  0x0000000103ddc9aa in gtk_widget_map ()
#10 0x0000000103de74e1 in gtk_window_map ()
#11 0x000000010441d874 in _g_closure_invoke_va ()
#12 0x000000010442ca81 in g_signal_emit_valist ()
#13 0x000000010442d62d in g_signal_emit ()
#14 0x0000000103ddc9bc in gtk_widget_map ()
#15 0x0000000103de7431 in gtk_window_show ()
#16 0x000000010441d874 in _g_closure_invoke_va ()
#17 0x000000010442ca81 in g_signal_emit_valist ()
#18 0x000000010442d62d in g_signal_emit ()
#19 0x0000000103ddc55d in gtk_widget_show ()
#20 0x00000001027ae2b5 in createCairoDevice ()
#21 0x00000001027ab7c5 in initCairoDevice ()
#22 0x00000001027aba37 in do_Cairo ()
#23 0x0000000100067b0f in do_dotCode ()
#24 0x0000000100093ed6 in Rf_eval ()
#25 0x00000001000955b2 in do_begin ()
#26 0x0000000100093d68 in Rf_eval ()
#27 0x00000001000983d5 in Rf_applyClosure ()
#28 0x0000000100093f94 in Rf_eval ()
#29 0x00000001000c5e51 in Rf_ReplIteration ()
#30 0x00000001000c5fca in R_ReplConsole ()
#31 0x00000001000c648c in run_Rmainloop ()
#32 0x0000000100000e8b in main ()

これは Homebrew でインストールした pango を使っても起こります。
RGtk2 のサンプルの方はというと、次のようにクラッシュします。

> library(RGtk2)
Xlib:  extension "RANDR" missing on display "/tmp/launch-tHpkdy/org.x:0".
> library(cairoDevice)
> win = gtkWindow()
> da = gtkDrawingArea()
> win$add(da)
> asCairoDevice(da)
[1] TRUE
> plot(1:10)
R(62131,0x7fff7090dcc0) malloc: *** error for object 0x4024000000000000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap (core dumped)

解放するメモリがないのに解放しようとすると起きるエラーみたいです。実際 backtrace を見るとこんな感じです。

(gdb) bt
#0  0x00007fff84dc40b6 in __kill ()
#1  0x00007fff84e649f6 in abort ()
#2  0x00007fff84d7c195 in free ()
#3  0x000000010482ae8a in _cairo_stroke_style_fini ()
#4  0x00000001048171f7 in _cairo_gstate_fini ()
#5  0x0000000104812325 in cairo_destroy ()
#6  0x0000000104fce08c in initDevice ()
#7  0x0000000104fcfb9e in Cairo_NewPage ()
#8  0x00000001000b35be in Rf_GNewPlot ()
#9  0x00000001000f8459 in do_plot_new ()
#10 0x000000010008cd88 in bcEval ()
#11 0x0000000100093b0f in Rf_eval ()
#12 0x00000001000983d5 in Rf_applyClosure ()
#13 0x000000010008cc55 in bcEval ()
#14 0x0000000100093b0f in Rf_eval ()
#15 0x00000001000983d5 in Rf_applyClosure ()
#16 0x00000001000d9123 in Rf_usemethod ()
#17 0x00000001000d9456 in do_usemethod ()
#18 0x000000010008cf4d in bcEval ()
#19 0x0000000100093b0f in Rf_eval ()
#20 0x00000001000983d5 in Rf_applyClosure ()
#21 0x0000000100093f94 in Rf_eval ()
#22 0x00000001000c5e51 in Rf_ReplIteration ()
#23 0x00000001000c5fca in R_ReplConsole ()
#24 0x00000001000c648c in run_Rmainloop ()
#25 0x0000000100000e8b in main ()

この辺でさすがに心が折れました・・・。
何時間もかけてまで使ってみたいものじゃなかったんでこのまま放置します。
誰か「こんな感じで問題を調査すれば原因を特定できるよ!」とか「こうすればサンプルが動いたよ!」というエントリーを書いてくれることを期待してます!!