Bug 25090 - Теряет русскую юникодную букву c
Summary: Теряет русскую юникодную букву c
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: ash (show other bugs)
Version: unstable
Hardware: all Linux
: P3 critical
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL: http://article.gmane.org/gmane.comp.s...
Keywords:
: 24483 (view as bug list)
Depends on:
Blocks: 10446
  Show dependency tree
 
Reported: 2011-02-15 18:14 MSK by Anton V. Boyarshinov
Modified: 2011-02-24 16:26 MSK (History)
7 users (show)

See Also:


Attachments
0001-BUILTIN-Fix-corruption-of-reads-with-byte-0x81.patch (1.30 KB, patch)
2011-02-24 14:28 MSK, Alexey Gladkov
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Anton V. Boyarshinov 2011-02-15 18:14:32 MSK
----с.sh--------
while read a; do
echo "[$a]"
done
/----с.sh--------
echo "фс" | ash ./c.sh
[ф�]
-----------------
echo "фс" | sh ./c.sh
[фс]
Comment 1 Dmitry V. Levin 2011-02-16 04:33:37 MSK
Это regression, ash-0.5.5.1-alt5 из 5.1 букву "с" не теряет.
Ошибка была найдена при помощи strace, который показал, что половина буквы "с" теряется во время read.
Comment 2 Alexey Gladkov 2011-02-17 00:50:41 MSK
Виноват тот патч, который я ревертил в ash-0.5.5.1-alt5.
Comment 3 Dmitry V. Levin 2011-02-24 01:51:22 MSK
(In reply to comment #2)
> Виноват тот патч, который я ревертил в ash-0.5.5.1-alt5.

Можно это как-нибудь быстро исправить, или проще отказаться от ash везде, где используется read?
Comment 4 Alexey Gladkov 2011-02-24 02:36:42 MSK
Быстро исправить нельзя, можно сломать ещё хуже. В debian и тем более в других дистрах патчей на эту тему нет. Варианта три:

1. Отказывайтесь от использования dash;
2. Откатываем dash на тот момент, когда патч можно было откатить, но получаем другие баги;
3. Не спешно исправляем или ждём исправления в апстрим.
Comment 5 Alexey Gladkov 2011-02-24 02:53:52 MSK
Дублирую сюда. Ошибка локализована до коммита. Осталось понять, что в нём так ломает read. У меня есть предположение.
Comment 6 Alexey Gladkov 2011-02-24 03:22:34 MSK
http://git.altlinux.org/people/legion/packages/ash.git?p=ash.git;a=blob;f=src/miscbltin.c;h=653c92f4381a0e1aecec131b3680f6869ca1e253;hb=49a94e2bab1e4f601a9fbdf9615d9e4e0150e412#l121

до вызова rmescapes() символ нормальный, после битый.
Comment 7 Alexey Gladkov 2011-02-24 03:37:09 MSK
Исправить можно. f8231aea37e921492fc7fbd972385ab5b90e8627 на ту же тему, но в другом месте.
Comment 8 Alexey Gladkov 2011-02-24 14:28:02 MSK
Created attachment 4819 [details]
0001-BUILTIN-Fix-corruption-of-reads-with-byte-0x81.patch

Думаю, что раз до коммита 55c46b dash не занимался удалением CTLESC в read, то можно спокойно убрать эту операцию из read.
Comment 9 Repository Robot 2011-02-24 15:14:16 MSK
ash-0.5.6-alt1.20110216 -> sisyphus:

* Thu Feb 24 2011 Alexey Gladkov <legion@altlinux> 0.5.6-alt1.20110216
- New release (0.5.6) and update from upstream git.
- This build provides the following fixes:
  + Fix corruption of readcmd with byte 0x81 (ALT#25090).
Comment 10 Andrey Cherepanov 2011-02-24 16:26:13 MSK
*** Bug 24483 has been marked as a duplicate of this bug. ***