Когда ручка с именем \ GLOBAL ??создано? - PullRequest
0 голосов
/ 06 сентября 2010

У меня есть дамп процесса, где количество дескрипторов в процессе достигло 16 миллионов дескрипторов (что является максимально допустимым дескриптором на процесс) Отсюда и процесс завис.

Из дампа (Это второй дамп, где количество дескрипторов велико, но не максимально). Я получаю следующие данные:

53778 Handles 
Type            Count    
None            2    
Event           238    
Section         3    
File            84    
Port            16    
**Directory       53120**    
Mutant          35    
WindowStation   2    
Semaphore       151    
Key             42    
Token           4    
Process         1    

0:000> !handle 9735 f    
Handle 00009735    
  Type          Directory    
  Attributes    0x10    
  GrantedAccess 0x1:    
  HandleCount   53575    
  PointerCount  53788    
  Name          \GLOBAL??
  No object specific information available

Есть много таких дескрипторов, открытых с именем: \ GLOBAL ?? и введите каталог. Здесь я хочу знать, в каких сценариях мы видим создание этого конкретного дескриптора? Есть ли способ узнать код, где происходит утечка из полного дампа?

Ответы [ 3 ]

2 голосов
/ 06 сентября 2010

Я полагаю, что вы используете WinDBG.

Если я не ошибаюсь, "\ GLOBAL ??" указывает, что ваша символическая ссылка относится ко всем сеансам. На Win2K это было "\ ??". Символические ссылки и дескрипторы могут быть локальными для сеанса. Например: я могу создать дескриптор Mutex и сделать его локальным для каждого сеанса обслуживания терминала. Это может быть сделано путем явного добавления префикса имени мьютекса к «Global \» или «Local» для создания объекта в глобальном или локальном пространстве имен сеанса. http://msdn.microsoft.com/en-us/library/ms682411(VS.85).aspx

1 голос
/ 06 сентября 2010

В Windows NT старая файловая система DOS, по сути, представляет собой набор ярлыков. Это необходимо, потому что это многопользовательская файловая система. Ваш диск H:\ может отличаться от диска H:\. Следовательно, оба они реализованы в виде ярлыков или символических ссылок.

SysInternals Process Monitor имеет представление дескриптора, и IIRC может захватывать дамп стека для каждой файловой операции. Это, конечно, быстро складывается; вам нужно изучить его фильтры.

1 голос
/ 06 сентября 2010

Это воспроизводимо? Если это так, вы должны попробовать расширение ! Htrace .

...