Attempted to read or write protected memory.
Atom
21.01.2011
Maxim


Михаил, добрый день. Помогите, пожалуйста, найти причину ошибки.

Описание ситуации: периодически, приблизительно раза два в неделю, при работе S# c Квиком возникает ошибка. В остальное время все работает без ошибки.

Описание исключения из дебагера:


ex	{"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."}
[System.AccessViolationException]	{"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."}
Data	{System.Collections.ListDictionaryInternal}
HelpLink	null
InnerException	null
Message	"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Source	"mscorlib
StackTrace

at System.StubHelpers.ValueClassMarshaler.ConvertToManaged(IntPtr dst, IntPtr src, IntPtr pMT)\r\n   
at Ecng.Interop.WinApi.GetMenuItemInfo(IntPtr hMenu, UInt32 uItem, Boolean fByPosition, MenuItemInfo& lpmii)\r\n   
at Ecng.Interop.ManagedWinApiHelper.GetMenuItems(IntPtr hMenu, SystemWindow window)\r\n   
at Ecng.Interop.SystemMenu..ctor(IntPtr hMenu, SystemWindow window)\r\n   
at Ecng.Interop.ManagedWinApiHelper.GetMenu(SystemWindow window)\r\n   
at Ecng.Trading.Quik.QuikTerminal.GetAccounts()\r\n   
at Ecng.Trading.Quik.QuikTrader.#=qOpBiLK4QqpviIWtcch8OWgvUqP3awIStT7FRqaHhRZY=.#=qCEoE_nVJQF0bssPXr1HgDhv_eIFFIbEByDSR6PGDD1A=()\r\n
at Ecng.Trading.Algo.BaseTrader.ProcessEvents(Action handler)
		
TargetSite	{Void ConvertToManaged(IntPtr, IntPtr, IntPtr)}


Ошибка возникает при исполнении участка кода:


// Подписываемся на событие соединения с квик
Global.Quik.Connected += () => 
{
	_waitConnected.Set(); 
};

// Подписываемся на событие появление портфеля
Global.Quik.NewPortfolios += portfolios =>
{
	Portfolio _portfolio = portfolios.FirstOrDefault(p => p.Name == Global.SqlQuikProperty.QuikAccount);

	if (_portfolio != null)
	{
		Global.Portfolio = _portfolio;
		_waitPortfolio.Set();
	}                        
};

// Соединяемся с Quik
Global.Quik.Connect();

if (_waitConnected.WaitOne(10000) == false)
	throw new Exception("We try connect to Quik, but have reach timeout");

if (_waitPortfolio.WaitOne(10000) == false)
	throw new Exception("We try connect to get Portfolio, but have reach timeout");

Более конкретно — ошибка возникает при исполнении вот этой строчки:


if (_waitPortfolio.WaitOne(10000) == false)

При этом ошибка возникает не в выше описанном коде, а ошибка ловится обработчиком события BaseTrader.ProcessDataError

Решить вопрос удается только логофом пользователя, после чего необходимо подождать некоторое время, прежде чем повторно входить под этим пользователем.


Теги:


Спасибо:


< 1 2 
Maxim

Фотография
Дата: 13.02.2011
Ответить


Михаил, получилось ли воспроизвести ошибку? Когда то была похожая проблема: возникала ошибка, если был развернут на все окно график. Ошибка, правда, была какая-то другая, подробности не смог найти в истории форума.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 13.02.2011
Ответить


Maxim: Михаил, получилось ли воспроизвести ошибку?

Вы же привели закономерность. Она не работает?

Спасибо:

Maxim

Фотография
Дата: 13.02.2011
Ответить


Вы же привели закономерность. Она не работает?

Немного не понял вопрос.

Наблюдается баг: если окно заявки развернуто на максимум, то при попытке соединится с Квиком посредсвтом S# возникает исключение: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt.»

Баг не критичный, но хотелось бы его устранить.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 13.02.2011
Ответить


Вы же привели закономерность. Она не работает?

Немного не понял вопрос.

Наблюдается баг: если окно заявки развернуто на максимум, то при попытке соединится с Квиком посредсвтом S# возникает исключение: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt.»

Баг не критичный, но хотелось бы его устранить.

Вопрос в чем? Как воспроизвести багу или как ее устранить?

Спасибо:

Maxim

Фотография
Дата: 13.02.2011
Ответить


Вопрос как его устранить? И считаете ли Вы это багом?

Спасибо:

Mikhail Sukhov

Фотография
Дата: 13.02.2011
Ответить


Maxim: Вопрос как его устранить? И считаете ли Вы это багом?

Устранить - использовать S# 3.0. И да, конечно же это баг.

Спасибо:

Maxim

Фотография
Дата: 13.02.2011
Ответить


Вроде Вас понял. У нас недопонимание получилось.

Надо было спросить, устранен ли этот баг в 3 версии. Насколько я понял из ответа — устранен.

Я только начал переход на 3.0

Спасибо:
< 1 2 

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy