DDERR_SURFACELOST

Bugs (reports, fixes, etc.)

Postby breeze » 21 May 2010, 11:34

С завидной периодичностью вылетает сообщение об ошибке:

Code: Select all
IDirectDrawSurface2::Blt(): DDERR_SURFACELOST
see you later!


в настройках выбран — driver=blt (hardware blitter. recommended for accelerated cards (geforce4/etc))
Обратил внимание, что данная ситуация случается при переключении между задачами, активно использующими ресурсы видеокарты (например последние версии PhotoShop)

Нашел интересный текст о функциях DirectX и этой ошибке в частности, который подтверждает мои догадки:

DirectDraw может забрать у неактивного приложения видеопамять, занятую некоторыми (или всеми) поверхностями. Такие поверхности называются потерянными (lost). Вообще говоря, такие поверхности остаются у вашей программы, но они перестают быть связанными с какой-либо областью памяти. Любая попытка использовать потерянную поверхность приводит к ошибке DDERR_SURFACELOST. Функция IsLost позволяет узнать, была ли потеряна память данной поверхности.

Потерянную поверхность можно восстановить функцией Restore, но только после повторной активизации вашего приложения. Тем самым предотвращается восстановление поверхностей для приложений, находящихся в свернутом виде на панели задач.


Я не знаю проверяется ли сейчас что-нибудь функцией IsLost, но подозреваю что нет.
breeze
 
Posts: 538
Joined: 07 Feb 2009, 16:19
Group: Registered users

Postby lvd » 21 May 2010, 12:16

Глюкодром повышенной глючности.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7158
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby molodcov_alex » 21 May 2010, 12:30

Я в ентой (http://narod.ru/disk/20772663000/us0373_mod(saa).rar.html) версии убрал вылетание по этой ошибке. Народ вроде не жаловался и у меня вроде все работает.

А вообще, ИМХО, хорошо бы сделать сохранение состояния (память, регистры, порты, диски) при аварийном завершении работы.
User avatar
molodcov_alex
 
Posts: 61
Joined: 01 Feb 2009, 11:12
Group: Registered users

Postby breeze » 21 May 2010, 13:53

molodcov_alex wrote:А вообще, ИМХО, хорошо бы сделать сохранение состояния (память, регистры, порты, диски) при аварийном завершении работы.


согласен, ибо, если использовать эмулятор чисто для быстрого просмотра, это не так фатально, а вот если что-то делаешь и оно вылетает :( как бы не очень приятно и нервов стоит.
breeze
 
Posts: 538
Joined: 07 Feb 2009, 16:19
Group: Registered users

Postby deathsoft » 21 May 2010, 14:09

На счет видео - хз, проверял ли смт на Lost или нет, в звуке я это переделал (т.к. вылетало постянно и у многих). В видео - смт видимо забил сделать по нормальному - поэтому и вылетает, надо переделать.
User avatar
deathsoft
 
Posts: 4635
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby breeze » 21 May 2010, 14:10

deathsoft wrote:надо переделать


Было бы просто супер! :)
breeze
 
Posts: 538
Joined: 07 Feb 2009, 16:19
Group: Registered users

Postby deathsoft » 21 May 2010, 14:14

breeze wrote:Было бы просто супер!

Проблема в том, что мне этот глюк будет проявить очень трудно. У тебя видяха какая (сколько видеопамяти)? У меня просто 512мб на видяхе и память там просто так не кончится, можно хоть 10 унриалов запустить и переключатся между ними и сворачивать.
User avatar
deathsoft
 
Posts: 4635
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby molodcov_alex » 21 May 2010, 14:40

deathsoft wrote:Проблема в том, что мне этот глюк будет проявить очень трудно.

У меня, например, такое происходит чаще всего в win2k когда Ctrl+Alt+Del жмешь (типа окошко появляется: завершить работу, диспетчер задач и прочее).
Причем сначала сурфейслостается, а потом уже приходит сообщение о потере фокуса. В дебуге (в смысле при дебугинге самого анрила), при жутких тормозах, вероятность сильно повышается, может вывалиться при просто сворачивании.
User avatar
molodcov_alex
 
Posts: 61
Joined: 01 Feb 2009, 11:12
Group: Registered users

Postby deathsoft » 21 May 2010, 15:28

Я думаю надо профиксить чисто теоретически, а дальше дать протестиь тем у кого вылетает, обработку сурфас лоста можно взять из примеров для директ икса, я собственно там и смотрел как для саунд буфера обработка лоста сделана.
User avatar
deathsoft
 
Posts: 4635
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby deathsoft » 21 May 2010, 15:41

molodcov_alex wrote:убрал вылетание по этой ошибке

Убирать вылетание просто так и игнорировать эту ошибку нельзя, при возникновении этой ошибки нужно долбить в цикле ресторе и слип, пока память не отресторится, а после этого еще и скопировать в нее то что там было до потери.
User avatar
deathsoft
 
Posts: 4635
Joined: 07 Apr 2007, 00:58
Group: Registered users

Next

Return to Ошибки

Who is online

Users browsing this forum: No registered users and 1 guest

cron