Porządkowanie plików DLL

Jak uniknąć niewłaściwej pracy aplikacji dla Windows 95 i błędów GPF?

Jak uniknąć niewłaściwej pracy aplikacji dla Windows 95 i błędów GPF?

Wprowadzenie na rynek systemu Windows 95 nie zapobiegło zjawisku zawieszania się wielu aplikacji uruchamianych na komputerach PC. Microsoft wprawdzie wyposażył swój najnowszy produkt w wiele rozwiązań zwiększających niezawodność pracy aplikacji, w tym w opcję Local Reboot (naciśnięcie klawiszy "Ctrl-Alt-Delete"), dzięki której błędnie pracujący program jest usuwany z pamięci komputera, lecz nie jest to sposób na pozbycie się tak uciążliwego błędu, jakim jest GPF (General Protection Fault).

Błąd ten jest generowany najczęściej wtedy, gdy aplikacja próbuje korzystać z obszaru pamięci, do którego nie ma uprawnień. Sytuacja taka zdarza się przy uruchamianiu aplikacji 16-bitowych, które próbują wpisywać dane do obszaru zarezerwowanego dla innej aplikacji. Prowadzi to do zawieszania się systemu i wygenerowania błędu GPF. W pewnych okolicznościach podobnego rodzaju błąd może być też wywoływany przez aplikację 32-bitową. Windows 95 nie jest bowiem systemem operacyjnym, pracującym w pełni w trybie chronionym.

Problemy z bibliotekami DLL

Analizą przyczyn błędów zajął się m.in. Michael Green (analityk systemu, pracujący w firmie Paranet Inc., Houston), który doszedł do bardzo interesujących wniosków. Otóż stwierdził on, że w ponad 90% winę za zawieszanie się systemu ponoszą błędnie skonfigurowane biblioteki DLL. Microsoft przyjął, że współdzielone biblioteki DLL powinny być magazynowane w katalogu System. Większość aplikacji uruchamianych pod systemem Windows 95 korzysta więc z usług plików DLL, które są przechowywane w tym właśnie katalogu.

Problem w tym, że są to bardzo różne zbiory. Producenci narzędzi do budowania aplikacji (np. Borland International Corp.) oferują użytkownikom cały zestaw bibliotek, które przyspieszają i usprawniają proces budowania aplikacji. Aplikacje te instalują nowe biblioteki w folderze System. Problem zaczyna się, wtedy gdy aplikacja instaluje starszą wersję biblioteki, usuwając jednocześnie nowszą. I tak np. aplikacja, pracująca bezbłędnie z biblioteką MY.DLL w wersji 2.3, może być przyczyną pojawienia się błędu GPF z chwilą skorzystania z usług tej samej biblioteki, ale już w wersji 2.2.

Należałoby więc posłużyć się mechanizmem, który zapobiegałby zapisywaniu nowszych wersji bibliotek przez starsze. Nie jest to jednak proste. Po pierwsze, biblioteki pochodzą z różnych źródeł. Mogą to być produkty tak uznanych firm jak Microsoft, Borland czy wielu innych, niezależnych producentów oprogramowania. Kolejny problem polega na tym, że programiści zmieniają datę przypisaną plikom wchodzącym w skład budowanej aplikacji (tak aby odpowiadała ona konkretnej, wcześniej przyjętej dacie). Może się więc zdarzyć tak (i zdarza się bardzo często), że plikom wchodzącym w skład starszej biblioteki programista przypisuje nowszą datę niż ta, która towarzyszy ostatniej wersji tej biblioteki.

Należy jednak pamiętać, że każdej bibliotece (i innym wykonywalnym modułom) przypisany jest wewnętrzny numer wersji, który pozostaje ten sam niezależnie od tego, jaką datę nada plikowi użytkownik. Wewnętrzny numer wersji każdej biblioteki można obejrzeć po kliknięciu prawym przyciskiem myszy na nazwie pliku (okienko Explorer), a następnie wybraniu opcji Properties i Version. Wielu programistów ignoruje tę konwencję znakowania oprogramowania. Niektórzy wiedzą o istnieniu tej opcji i próbują ją stosować. Brak jest im jednak systematyczności i nie przestrzegają reguł obowiązujących przy zarządzania plikami na podstawie wewnętrznego numeru wersji.

Michael Green uporządkował w swojej firmie wszystkie biblioteki DLL, usuwając starsze wersje i zastępując je nowszymi. Operację przeprowadził w środowisku sieciowym, składającym się z 400 komputerów PC (pracujących pod systemem Windows 95). Okazało się, że po wykonaniu tej operacji błędy GPF zniknęły. Wniosek jest prosty - jeśli podobnego rodzaju czynności porządkujące biblioteki DLL przyniosły tak doskonały efekt w sieciowym systemie informatycznym, to można być pewnym, że podobny rezultat uzyskamy po uporządkowaniu bibliotek w środowisku niewielkich instalacji sieciowych czy w odniesieniu do komputerów pracujących w trybie autonomicznym.

Porządkowanie plików DLL

W jaki sposób można uporządkować biblioteki DLL i ustrzec się przed błędem GPF? Proponujemy wykonanie kilka prostych operacji. Ale tu ważna uwaga - nie należy tego czynić w przypadku używania aplikacji wchodzących w skład pakietu Microsoft Office, Excel 5.0, Word 6.0, PowerPoint 4.0, Project 4.0 lub Visual FoxPro 3.0. O tym, jak postępować z bibliotekami DLL świadczącymi swe usługi tym aplikacjom, w dalszej części materiału.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200