Könnyen reprodukálható nálam is, ha valamelyik LC_XXX változóban érvénytelen értéket adok meg. A "locale" parancs (paraméterek nélkül) csak annyit jelez vissza, hogy a felhasználó milyen beállításokat szeretne érvényesíteni; arról nem szól, hogy ebből mi elégíthető ki.
Ez a sor hajít el egy std::runtime_error-t (a [lib.locale.cons] p7 által dokumentáltan):
const std::locale cur_loc("");
Biztosat persze csak úgy fogsz tudni, ha engedélyezed a core dump írását, és belenézel gdb-vel (... és ha a forrást -g3-mal fordítod).
Az a parancs, hogy "locale -k", nem jelez hibát? Pl. LC_MESSAGES hiányára nem panaszkodik?
... Arra akarok kilyukadni, hogy a hu_HU.ISO8859-2 nincs 100%-osan telepítve. Egy "rendes" programnak természetesen az ilyen hibákat is kezelnie kell, de most ezzel nem foglalkoztam. Pl. a ::setlocale() visszatérési értékét sem ellenőrzöm.
Az LC_MESSAGES legegyszerűbb ellenőrzése (a fenti LANG beállítás mellett):
touch /tmp/dummy
rm -i /tmp/dummy
Ha az "rm" kérdésére "i"-vel (és nem "y"-nal) válaszolsz, letörli a file-t?