Неуловимая ошибка Ctrl+Z, правда или миф?


#1
Немного предыстории

Жила была IDE, и было всё ок. Но потом у кого то при нажатии Ctrl+Z она сломалась. Были предоставлены скрины. Но эта ошибка была проигнорирована, как большая часть плавающих. Эту ещё и не удавалось воспроизвести никому…

Шло время…

Шло, да…

И у кого то она снова возникла. Снова та же история. И возможно этот цикл ещё пару раз повторялся.



Но по сей день, никто не может поймать эту ошибку. Она появляется в самый неожиданный момент, наносит удар по важной незавершённой сессии (хотя оставляет жертве шанс, которым могут заметить только бывалые - Ctrl+S) и исчезает, как будто её и не было.

Особо странно то, что я не нашёл ни 1 скриншота на форуме, и ни 1 упоминания о ней. Я бы, наверное, решил что я сошёл с ума, если бы @MrFresnel не залил issue с ней, тем самым подтвердив что она не только в моей голове.

Что же она такое? Миф? Коллективная галлюцинация?


Если серьёзно - я сам могу подтвердить, у меня пару раз вылетала IDE от неё. Но это было давно, следов не сохранилось. Вроде это было при запуске IDE/после долгого не пользования/после спящего режима, но я, честно, не представляю что оно такое.

Сообщайте сюда все случаи где Ctrl+Z ломает вам жизнь. На всяк шпаргалочка:

  • скриншот
  • сообщение об ошибке
  • данные о системе (оперативка, и т.п.)
  • что вы делали, в максимальных подробностях
  • исходники + отдельно указать из всех исходников - в каком файле эта ошибка возникла.

Конечно, все пункты не обязательны, лучше залейте сюда хоть что то чем ничего. Но чем больше информации - тем лучше.

@Admin быстро информация о ней не найдётся. Раз не хотите делать специальные условия в IDE, чтоб эту ошибку было легче ловить - закрепите пожалуйста эту тему.


#2

Навеяно постом на Хабре?


#3

Подробнее?


#4

#5

Закрепил тему.

@VladislavMoldovan писал кляузу на Хабре и основным его аргументом была мистическая ошибка Ctrl + Z.


#6

Давайте воздержимся от обсуждения личностей, будем говорить исключительно по делу. Лично у меня, эта ошибка возникала. Но, я не могу определить точно когда это происходило - это трудно воспроизвести. У кого какие соображения по этому поводу?


#7

Ну, на самом деле это частично по делу.

@Gleb а на той странице хабра случайно не со скрином?

Ну так в том и смысл этой ошибки))


#8

Могу предположить, что это возникает от быстрого нажатия Ctrl+Z. Но, это не всегда так, точнее - ошибка не всегда от этого сразу появляется.


#9

У меня она не возникала уже, наверное, пол года.

Это не обсуждение личности.

Нет конечно. Голые слова.

Она могла появляться при нажатии комбинации сразу после открытия среды.


#10

Прозвучало как-то пренебрежительно по отношению к этому участнику.


#11

Видите ли, за дело. Могу вынести “послужной список”.


#12

Ахахахаххаха ХАХА ХАХА Я СМОГ:

Подробная информация об использовании оперативной 
(JIT) отладки вместо данного диалогового 
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.ArgumentOutOfRangeException: index should be between 0 and 0
Имя параметра: index
Фактическое значение было 11.
   в ICSharpCode.TextEditor.Document.LineSegmentTree.GetNode(Int32 index)
   в ICSharpCode.TextEditor.Document.DefaultDocument.GetLineSegment(Int32 line)
   в ICSharpCode.TextEditor.TextView.CountColumns(Int32& column, Int32 start, Int32 end, Int32 logicalLine, Graphics g)
   в ICSharpCode.TextEditor.TextView.GetDrawingXPos(Int32 logicalLine, Int32 logicalColumn)
   в ICSharpCode.TextEditor.TextArea.SetDesiredColumn()
   в ICSharpCode.TextEditor.Actions.WordBackspace.Execute(TextArea textArea)
   в ICSharpCode.TextEditor.TextArea.ExecuteDialogKey(Keys keyData)
   в ICSharpCode.TextEditor.TextArea.ProcessDialogKey(Keys keyData)
   в System.Windows.Forms.Control.PreProcessMessage(Message& msg)
   в System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
   в System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)


************** Загруженные сборки **************
mscorlib
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
PascalABCNET
    Версия сборки: 3.4.0.1758
    Версия Win32: 3.4.0.1758
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PascalABCNET.exe
----------------------------------------
System
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2563.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Windows.Forms
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
PluginsSupport
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PluginsSupport.DLL
----------------------------------------
CompilerTools
    Версия сборки: 3.4.0.1758
    Версия Win32: 3.4.0.1758
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/CompilerTools.DLL
----------------------------------------
WeifenLuo.WinFormsUI.Docking
    Версия сборки: 2.2.5489.36547
    Версия Win32: 2.2.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/WeifenLuo.WinFormsUI.Docking.DLL
----------------------------------------
Compiler
    Версия сборки: 3.4.0.1758
    Версия Win32: 3.4.0.1758
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Compiler.DLL
----------------------------------------
Localization
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Localization.DLL
----------------------------------------
System.Configuration
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2612.0 built by: NET471REL1LAST_B
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Windows.Forms.resources
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
ICSharpCode.TextEditor
    Версия сборки: 0.0.0.0
    Версия Win32: 0.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.TextEditor.DLL
----------------------------------------
CodeCompletion
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/CodeCompletion.DLL
----------------------------------------
ParserTools
    Версия сборки: 3.4.0.1758
    Версия Win32: 3.4.0.1758
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ParserTools.DLL
----------------------------------------
Accessibility
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
Errors
    Версия сборки: 3.4.0.1758
    Версия Win32: 3.4.0.1758
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Errors.DLL
----------------------------------------
SyntaxTree
    Версия сборки: 3.4.0.1758
    Версия Win32: 3.4.0.1758
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SyntaxTree.DLL
----------------------------------------
ICSharpCode.SharpDevelop
    Версия сборки: 4.2.1.0
    Версия Win32: 4.2.1.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.SharpDevelop.DLL
----------------------------------------
ICSharpCode.Core
    Версия сборки: 4.2.1.0
    Версия Win32: 4.2.1.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.Core.DLL
----------------------------------------
ICSharpCode.SharpDevelop.Dom
    Версия сборки: 4.2.1.8805
    Версия Win32: 4.2.1.8805
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.SharpDevelop.Dom.DLL
----------------------------------------
ICSharpCode.NRefactory
    Версия сборки: 4.2.1.8805
    Версия Win32: 4.2.1.8805
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.NRefactory.DLL
----------------------------------------
ICSharpCode.AvalonEdit
    Версия сборки: 4.2.1.8805
    Версия Win32: 4.2.1.8805
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.AvalonEdit.DLL
----------------------------------------
ICSharpCode.Core.Presentation
    Версия сборки: 4.2.1.0
    Версия Win32: 4.2.1.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.Core.Presentation.DLL
----------------------------------------
ICSharpCode.SharpDevelop.Widgets
    Версия сборки: 4.2.1.8805
    Версия Win32: 4.2.1.8805
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.SharpDevelop.Widgets.DLL
----------------------------------------
ICSharpCode.Core.WinForms
    Версия сборки: 4.2.1.0
    Версия Win32: 4.2.1.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.Core.WinForms.DLL
----------------------------------------
System.Design
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Design/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Design.dll
----------------------------------------
Debugger.Core
    Версия сборки: 3.0.0.2649
    Версия Win32: 3.0.0.2649
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Debugger.Core.DLL
----------------------------------------
System.Data
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2623.0 built by: NET471REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
TreeConverter
    Версия сборки: 3.4.0.1758
    Версия Win32: 3.4.0.1758
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/TreeConverter.DLL
----------------------------------------
NETGenerator
    Версия сборки: 3.4.0.1758
    Версия Win32: 3.4.0.1758
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/NETGenerator.DLL
----------------------------------------
SyntaxTreeConverters
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SyntaxTreeConverters.DLL
----------------------------------------
SemanticTree
    Версия сборки: 3.4.0.1758
    Версия Win32: 3.4.0.1758
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SemanticTree.DLL
----------------------------------------
System.Numerics
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
PascalABCParser
    Версия сборки: 0.0.0.0
    Версия Win32: 0.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PascalABCParser.DLL
----------------------------------------
OptimizerConversion
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/OptimizerConversion.DLL
----------------------------------------
InternalErrorReport
    Версия сборки: 1.0.6807.27158
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/InternalErrorReport.DLL
----------------------------------------
PT4Provider
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PT4Provider.DLL
----------------------------------------
PT4Tools
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PT4Tools.DLL
----------------------------------------
SharpDisasm
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SharpDisasm.DLL
----------------------------------------
SyntaxVisitors
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SyntaxVisitors.DLL
----------------------------------------
YieldHelpers
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/YieldHelpers.DLL
----------------------------------------
System.Security
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Security/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Security.dll
----------------------------------------
mscorlib.resources
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном.

Что я делал:

  1. Разное всякое (не помню)
  2. Написал скрипт для своего кликера, который со скоростью звука тыкает Ctrl+Z
  3. Написал что то в IDE
  4. врубил кликер
  5. вырубил кликер
  6. попробовал выделить код (именно только в этот момент возникла ошибка. но я подозреваю что ещё 1 нажатие Ctrl+Z (если бы было к чему возвращать ещё) - привело бы к тому же).

Моё предположение:
IDE пытается обрабатывать Ctrl+Z -ы асинхронно друг от друга. Если 2 накладываются друг на друга - это ломает что то внутреннее, типа содержимое редактора установил первый Ctrl+Z, а переменную означающую общее количество строчек второй (из которых наложились друг на друга) - IDE ломается.

Решение:
Использовать lock чтоб запретить накладывать 1 Ctrl+Z на другое.


#13

А я то думаю, что Вы там так долго пишете :rofl: Но, спасибо большое! Я до сих пор не верил в существование проблемы.


#14

Вы молодец! Теперь можно считать, что официально подтверждено, что ошибка с Ctrl+Z не является выдуманной.


#15

Так же, как и металлический водород :wink:


#16

Если бы она ещё воспроизводилась)))))


#17

Ну так она и воспроизводится. Мало ли, кто Тибетской техникой печати обладает :smile:

Вот так и подмывает повторить любимый @RAlex’ом анекдот:

Вышли из леса суровые русские мужики и увидели японскую бензопилу.
— Оба-на! — сказали суровые русские мужики и засунули в пилу щепку.
— Вжик! — сказала пила и распилила щепку.
— Оба-на- сказали суровые русские мужики и засунули в пилу доску.
— Вжжик! — сказала пила и распилила доску.
— Оба-на!- сказали суровые русские мужики и засунули в пилу бревно.
— Вжжжжик! — сказала пила и распилила бревно.
— Оба-на!!!- сказали суровые русские мужики и засунули в пилу рельс.
— Хррр-дзинь — сказала пила и сломалась.
— А-а-а!!!- сказали суровые русские мужики и пошли валить лес топорами.

#18

Не всегда и не у всех. В этом и проблема.


#19

А вот и нет.

  1. её изначально получали нормальные люди в нормальных условиях
  2. после запуска IDE, после того как её долго не пользовались (и все её кишки выгрузило в файл подкачки), после спящего режима и т.п. - IDE работает медленно. И в этим моменты, если в 1 пролаг успеть 2 раза тыкнуть Ctrl+Z (и получить удачу из преисподней) - получаем ошибку.

В общем, надо наверное делать больше тестов, больше насилования IDE набором и удалением текста через кликер…

Если кто хочет помочь - я вот этим делал кликеры. Очень кривой скриптовый язык с интерпритатором, который я написал очень давно, но для этого дела сойдёт. Там Help.exe всё объяснит. Вводите команду - он вам даёт её описание. Вводите пустую строку - получаете список команд. Ну, по идее, кроме “Next” “Key” и “Susp” - вряд ли что то понадобится.


#20

Прикольная вещь. Хуки я люблю, вирусы неплохие получаются :sunglasses: