Найден одним из новичков cyberforum. Ковыряем потихоньку. Всё ведёт к кривой реализации libio, показывая, что setlocale нипричём. Кстати, без setlocale баг не воспроизводится. Может кто-нибудь знает в чём дело???
[faust@archlinux РАзная всячина]$ cat 1.c && gcc 1.c && ./a.out
#include <string.h>
#include <errno.h>
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main()
{
    
    setlocale(LC_ALL, "ru_RU.UTF-8"); /*а вот тут уже до лампочки 
        обращения setlocale к потоку stdin - он уже "широкий" и сегфолтов/стеков уже не будет*/
/*    printf("1. errno = %s\n", strerror(errno));*/
    getwc(stdin);
/*    printf("2. errno = %s\n", strerror(errno));*/
    return 0;
}
1111111111111111111111111
*** stack smashing detected ***: <unknown> terminated
Аварийный останов (стек памяти сброшен на диск)
[faust@archlinux РАзная всячина]$ cat 1.c && clang 1.c && ./a.out
#include <string.h>
#include <errno.h>
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main()
{
    
    setlocale(LC_ALL, "ru_RU.UTF-8"); /*а вот тут уже до лампочки 
        обращения setlocale к потоку stdin - он уже "широкий" и сегфолтов/стеков уже не будет*/
/*    printf("1. errno = %s\n", strerror(errno));*/
    getwc(stdin);
/*    printf("2. errno = %s\n", strerror(errno));*/
    return 0;
}
111111111111111111111111
*** stack smashing detected ***: <unknown> terminated
Аварийный останов (стек памяти сброшен на диск)
[faust@archlinux РАзная всячина]$



