LINUX.ORG.RU

Глюки Kate со временем?

 ,


0

1

Сижу, редактирую текстовый файл (компоную копипасту). Сохраняю чуть ли не каждую минуту. Внезапно появляется сообщение «файл на диске был изменён». Сохранил под другим именем, откатил правки к последнему сохранению, сохранил под третьим. Сравнил — «изменённый» и откаченный идентичны.

В чём может быть дело?

lsof этот файл не видит. Я правильно понимаю, что Kate его при каждом сохранении открывает-закрывает и запоминает время?

P.S. Предыдущие несколько недель пользовался vim и mcedit, которые тоже отслеживают модификацию файла посторонними, но ни о чём не сигналили.

★★★★★

Последнее исправление: question4 (всего исправлений: 1)

Что и как делает kate можно узнать в его исходниках или через его запуск через strace и смотреть какие функции он вызывает.

Но в целом для сохранения изменений в файле должна вызываться функция fclose.

Потому как пока она не вызвана изменения переданные в файловый дескриптор не записываются в файловую систему.

anonymous
()

Я давно мельком смотрел как там всё устроено, вроде как на файл вешается QFileSystemWatcher, который отслеживает изменения файла, сам файл хранится в ОЗУ, запись в ФС происходит только при попытке сохранить файл, ещё он вроде предварительно работает с временным файлом и только потом записывает оригинал (на случай того, если произойдёт ошибка или файл перестанет быть записываемым).

Но это я так, по памяти говорю, надо сами исходники смотреть.

Внезапно появляется сообщение «файл на диске был изменён». Сохранил под другим именем, откатил правки к последнему сохранению, сохранил под третьим. Сравнил — «изменённый» и откаченный идентичны.

Вообще обычно это происходит только если какая-то внешняя программа вносит изменения в файл.

Dr64h ★★
()
Ответ на: комментарий от Dr64h

Внезапно появляется сообщение «файл на диске был изменён». Сохранил под другим именем, откатил правки к последнему сохранению, сохранил под третьим. Сравнил — «изменённый» и откаченный идентичны.

Вообще обычно это происходит только если какая-то внешняя программа вносит изменения в файл.

Вот именно, но никаких изменений я не нашёл.

вроде как на файл вешается QFileSystemWatcher

Да, в исходниках он есть. Что может вызывать его ложные срабатывания?

работает с временным файлом

Где он лежит, кстати? Рядом с оригиналом, как делают многие другие программы, его нет. В ~/.local/share/kate тоже, и в конфигах я его не нашёл.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от question4

Да, в исходниках он есть. Что может вызывать его ложные срабатывания?

В доке упоминается, что он использует inotify, я в работе линуксовых ФС особо не разбираюсь, так что этот вопрос скорей не ко мне.

Есть ещё вариант собрать исходники с отладчиком и через него отследить что идёт не так.

Dr64h ★★
()
Ответ на: комментарий от question4

Где он лежит, кстати? Рядом с оригиналом, как делают многие другие программы, его нет. В ~/.local/share/kate тоже, и в конфигах я его не нашёл.

https://github.com/KDE/ktexteditor/blob/master/src/buffer/katetextbuffer.cpp#...

https://github.com/KDE/ktexteditor/blob/master/src/buffer/katetextbuffer.cpp#...

Dr64h ★★
()

Ну как редактор он полное говно. Недавно мне систему повесил, когда я SQL-дамп 100 мегабайт открыл. VS Code может гигабайтные файлы, например, открывать

rtxtxtrx
()