Всем привет!
Попытался бутстрапнуть Nemerle под Mono, и получил вполне ожидаемый FAIL. О том, что Nemerle сейчас не собирается я знал, но т.к. очень хочется свежую версию в Debian'е, решил исправить это дело и начал копать.
При сборке получается примерно такая ругань: http://pastebin.com/Y2VRpnya
Особо интересным является этот кусок:
#4 0x08062a4d in mono_sigsegv_signal_handler (_dummy=11, info=0x40036b4c, context=0x40036bcc) at mini.c:5909
#5 <signal handler called>
#6 0x081c2325 in create_custom_attr (error=0xbfd7035c, len=<optimized out>, data=<optimized out>, method=<optimized out>, image=0x9134718) at reflection.c:8157
#7 mono_custom_attrs_construct_by_type (cinfo=0x92cd5f0, attr_klass="Nemerle.Internal.VariantAttribute", error=0xbfd7035c) at reflection.c:8428
#8 0x081c26fb in mono_reflection_get_custom_attrs_by_type (obj=0x17dfb0, attr_klass="Nemerle.Internal.VariantAttribute", error=0xbfd7035c) at reflection.c:8887
#9 0x0815f576 in custom_attrs_get_by_type (obj=0x17dfb0, attr_type=0x179b50) at icall.c:7543
Что делать — собрал отладочную версию Mono, стал копать. Выяснилось что падаем при разборе именованых параметров аттрибута, о которых говорится (по блобу), что их 27к. Явно что-то не так.
Решил дизассемблировать Nemerle.stage1.dll, т.к. все падает именно при «раскрутке» этой сборки в процессе сборки Nemerle.Compiler.stage1.dll. Наткнулся на такой вот странный кусок:
.custom instance string class Nemerle.Internal.VariantAttribute::get_VariantOptions() = (
01 00 81 78 4E 65 6D 65 72 6C 65 2E 55 74 69 6C // ...xNemerle.Util
69 74 79 2E 47 65 74 6F 70 74 2E 43 6C 69 4F 70 // ity.Getopt.CliOp
74 69 6F 6E 2E 46 6C 61 67 2C 4E 65 6D 65 72 6C // tion.Flag,Nemerl
65 2E 55 74 69 6C 69 74 79 2E 47 65 74 6F 70 74 // e.Utility.Getopt
2E 43 6C 69 4F 70 74 69 6F 6E 2E 42 6F 6F 6C 65 // .CliOption.Boole
Есть какие-то идеи? У меня в данный момент из соображений только то, что надо проверить какой stage1 собирается в оффтоп-.NET.