Odpowiedz

[News] Lepiej się nie spieszyć z wdrożeniem .NET 4.6, Microsoft wydał je z poważnym bugiem

 
Portator
Redaktor

Liczba postów: 10.980
Post: #1

Lepiej się nie spieszyć z wdrożeniem .NET 4.6, Microsoft wydał je z poważnym bugiem


Podczas testów działania serwisu Stack Overflow na zaktualizowanej wersji platformy .NET 4.6 pojawiły komplikacje, które poskutkowały decyzją o wstrzymaniu procesu wdrożenia tej technologii. Problemy dotyczyły narzędzia zwanego MiniProfilerem, które umożliwia wykonywanie pomiarów związanych z wydajności kodu, np. sposobu i czasu wykonywania wątków. Należy nadmienić, że błąd jest wynikiem niekompetencji programistów Microsoftu i zawiera się w błędnej implementacji mechanizmu o nazwie Tail Call przez kompilator RyuJIT w wersji 64 bitowej.
Lepiej się nie spieszyć z wdrożeniem .NET 4.6, Microsoft wydał je z poważnym bugiem
Twórcy Stack Overflow bardzo długo nie mogli odnaleźć przyczyny nieprawidłowości, gdyż była ona widoczna dopiero w przypadku produkcyjnej wersji aplikacji. Zatem testując kod w trybie zwanym Debug programiści stracili mnóstwo czasu nie otrzymując w zamian chociażby poszlaki, która mogłaby posłużyć do znalezienia błędu. Najpierw zespół zauważył błędne działanie MiniProfilera, który wyświetlał dane tylko w przypadku pierwszego ładowania strony. Takie zachowanie sugerowało błąd buforowania zaszyty w pamięci podręcznej działającego lokalnie HTTP. Programiści spróbowali więc ustawić długość przechowywania danych w pamięci podręcznej na 3600 sekund. Okazało się jednak, że w większości przypadków (~98%) ulegały one natychmiastowemu usunięciu z pamięci podręcznej HTTP.

Kolejnym krokiem prowadzącym do odnalezienia błędu była możliwość jego powtórzenia tylko przy odhaczonej opcji Optimize Code we właściwościach projektu. Po tym zabiegu programiści przetestowali sporą ilość kodu i odkryli, że jedna z wywoływanych metod nie otrzymuje przekazywanych do niej parametrów. Opisane zachowanie zasugerowało, że lokalna pamięć podręczna albo nie istnieje, albo działa w sposób nieprzewidywalny. Ostatecznie spowodowało to ogromny narzut na infrastrukturę sieciową i w znacznym stopniu zmniejszyło wydajność serwisu Stack Overflow.

Najskuteczniejszym rozwiązaniem problemu jest wstrzymanie się z aktualizacją do nowszej wersji .NET. Istnieje też możliwość wyłączenia RyuJIT bezpośrednio w rejestrze za pomocą stosownego menedżera lub w terminalu PowerShell. Należy nadmienić, że dodanie znacznika w pliku konfiguracyjnym aplikacji nie rozwiązuje problemu.

Za: dobreprogramy.pl

[Obrazek: 2089620800_1406976151.png]
Windows ❼ Forum

29.07.2015 05:40

Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz

Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
News Google wie lepiej, co dla ludzi dobre, zablokuje reklamy chwilówek Portator 0 947 14.05.2016 04:40
Ostatni post: Portator
News Opera 36 lepiej działa na Windows 10 i ma odświeżoną stronę startową Portator 0 846 17.03.2016 06:32
Ostatni post: Portator
News Microsoft może zamknąć kolejne firmy należące do Microsoft Studios Portator 0 922 09.03.2016 06:47
Ostatni post: Portator
News Microsoft: Windows 10 zbiera dane użytkowników, by żyło im się lepiej Portator 0 916 29.09.2015 05:14
Ostatni post: Portator
News Windows 10 na nowym MacBooku radzi sobie lepiej niż OS X? Portator 0 610 19.05.2015 05:05
Ostatni post: Portator
News Masz laptopa Della lub HP? Lepiej odinstaluj ich narzędzie diagnostyczne Portator 0 632 14.04.2015 04:50
Ostatni post: Portator
« Starszy wątek | Nowszy wątek »

Temat został oceniony na 0 w skali 1-5 gwiazdek.
Zebrano 1 głosów.