2.1.0_STABLEでSEGVが起きる問題は個人的にはほぼ解決した。read-blockで渡されたブロック長いっぱいの不完全文字列を読み込んだとき、今の文字列の考え方だとブロック長+1の領域を確保しなければいけないのにブロック長きっちりしか確保していない。*bのSCM_STRING_BODY_START(b)[size]が'\0'であるかどうかで、バッファそのものを返すか、バッファのコピーを返すかを判断している。スジ的に考えると後者はちょっと怪しい(だって不完全文字列って文字列中に\0含む可能性あるし)。効率を考えると前者に手を入れた方がいい。そもそも、Shiroさんも言っているように、完全文字列と不完全文字列との扱いはいまひとつ未整理という感じがあるし、そこを明確にしないと、後者だけうだうだ言っても始まらない。ありがとうございます。含む可能性はあります。caller側が気をつけるしかない問題です。\0が含まれないことはアプリ側で保証していると考えます。本体への参照をそのまま返す、ということをやっています。文字列が完全であっても不完全であってもこの部分は変わりません。わたしはかなり意図を取り違えていた(というよりある種の思い込みにとらわれていた)みたいです。install-checkしたらSEGVで落ちやがった。Xの時と全く同じ場所で落ちてる。こりゃやっぱり何かあるな。install-checkが通ってしまった。いうことで、原因究明できぬまま自然解決してしまった。腰を据えてコードを追う暇はないんだけど、気になるから合間についつい実験してしまう。-O'でビルドしたlibcharconv.so、あるいはその逆という組み合わせ実験。○ということで、たぶんldの再配置問題は関係なさそうな気配。