DevCon bits: Проблемы с WinQueryObjectPath и WinQueryActive

User avatar
Eugene Gorbunoff
Site Admin
Posts: 685
Joined: Sat Apr 09, 2005 11:18
Location: St.Petersburg, Russia

DevCon bits: Проблемы с WinQueryObjectPath и WinQueryActive

Postby Eugene Gorbunoff » Sat May 01, 2010 13:37

From: Glassman
Date: 20100430

WinQueryObjectPath, WinQueryActiveDesktopPathname, WPS, баг

Область

WinQueryObjectPath, WinQueryActiveDesktopPathname

Проблема

После нескольких тысяч обращений к функции WinQueryObjectPath или WinQueryActiveDesktopPathname, они перестают возвращать нужную информацию. Кроме того, после достижения указанного порога, перестают запускаться программы. Система выдает сообщение:

SYS0008: There is not enough memory available to process this command. All available memory is in use.

Помогает только перезагрузка. Расследование показало, что эти функции выделяют блоки общей памяти, которые передаются затем WPS для обработки. WPS же, получив к ним доступ, забывает освободить их.
В итоге, кончаются адреса (?) для общей памяти и PM уходит в ступор.

Простейший тест для выявления проблемы:

Code: Select all

#define  INCL_WIN
#include <os2.h>
#include <stdio.h>

void main()
{
  int  i = 0;
  CHAR szPath[CCHMAXPATH] = "";

  for(;;) {
    WinQueryActiveDesktopPathname( szPath, sizeof(szPath));
    printf( "%08u: %s\n", ++i, szPath );
  }
}


Возможное решение

Отсутствует. Однозначно баг. Шансов на исправление немного (никаких?).

User avatar
Eugene Gorbunoff
Site Admin
Posts: 685
Joined: Sat Apr 09, 2005 11:18
Location: St.Petersburg, Russia

Re: DevCon bits: Проблемы с WinQueryObjectPath и WinQueryActive

Postby Eugene Gorbunoff » Sat May 01, 2010 13:38

Joseph Shrago: Можно узнать как-нибудь адреса выделяемых блоков и сделать объект в WPS, который бы их возвращал системе пользуясь тем, что все объекты WPS в общей памяти работают?

Glassman: Нет. Память выделяется непосредственно в этих функциях, и хранится в локальных переменных, т.е. после вызова функции это адрес навсегда теряется и узнать его уже невозможно. Память - неименованная.


Return to “Developers / Разработчики”

Who is online

Users browsing this forum: No registered users and 1 guest

cron