OberonCore
https://forum.oberoncore.ru/

Тест на падение ББ
https://forum.oberoncore.ru/viewtopic.php?f=2&t=4404
Страница 1 из 1

Автор:  Роман М. [ Суббота, 20 Июль, 2013 19:55 ]
Заголовок сообщения:  Тест на падение ББ

На днях решил проверить на какой программе будет падать сборщик мусора BlackBox. В итоге на одном сайте увидел ссылку на тест для языка D.
После трансляции на КП при запуске в BB 1.6 RC6 я получил долгожданный капкан, который сопровождался многочисленным открытием MessageBox с сообщением об ошибке и спустя некоторое время Windows убивала процесс сама.

Я хотел бы знать у всех ли срабатывает данная ошибка. У меня сработала в Windows XP с 2 GB + Windows 8 с 4 GB.

Для проверки нужно предварительно забить память ОС, иначе сборщик мусора можен не активизироваться. Откройте много разных программ, включая броузер с множеством закладок (ютюбом, допустим).

Скомпилируйте и запустите программу:
Код:
MODULE TestGCAlloc1;

   (*
      Benchmark on uniformly distributed, random large allocations.
      
      Origin:   https://github.com/D-Programming-Language/druntime/blob/master/benchmark/gcbench/rand_large.d
      
      Copyright:   Copyright David Simcha 2011 - 2011.
      License:   Boost License 1.0   (See accompanying file LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt)
      Authors:   David Simcha
      Contributors:   Romiras 2013 (translated to Component Pascal + some modifications)
   *)
   
   IMPORT O := ObxRandom, Out;
   
   CONST
      nIter = 100;
      minSize = 1024 * 1000H;
      maxSize = 128 * minSize + 1;
   
   TYPE
      Item = POINTER TO ARRAY OF BYTE;
      Array = ARRAY 10 OF Item;
   
   VAR
      array : Array;
      item: Item;
   
   PROCEDURE UnifomInt (a, b: INTEGER): INTEGER;
      VAR r : REAL;
   BEGIN
      ASSERT(a < b, 22);
      r := O.Uniform();
      RETURN SHORT(ENTIER(a + r * (b - a)))
   END UnifomInt;
   
   PROCEDURE Do*;
      VAR i, j: INTEGER;
   BEGIN
      FOR i := 1 TO nIter DO
         FOR j := 0 TO LEN(Array) - 1 DO
            NEW(item, UnifomInt(minSize, maxSize));
            array[j] := item
         END;
         
         Out.String("Iteration "); Out.Int(i, 0); Out.Ln
      END
   END Do;

END TestGCAlloc1.

:!: TestGCAlloc1.Do

Данная ошибка была исправлена пользователем luowy в списке рассылки Blackbox в сентябре 2012. Модуль с последними исправлениями в сборщике мусора находится здесь

Автор:  Иван Денисов [ Воскресенье, 21 Июль, 2013 15:50 ]
Заголовок сообщения:  Re: Тест на падение ББ

В Красноярской сборке под Wine проблем нет. Наверное, уже внес эти исправления... хотя было бы любопытно проверить есть эти исправления или нет. Роман, если не очень сложно, приведите, пожалуйста, какие это изменения, чтобы не копаться в «здесь».

Автор:  Роман М. [ Воскресенье, 21 Июль, 2013 16:04 ]
Заголовок сообщения:  Re: Тест на падение ББ

Там была кнопка History, по которой можно было бы просмотреть историю изменений модуля.

Commit cf7bea25b81

Автор:  Иван Денисов [ Понедельник, 22 Июль, 2013 03:25 ]
Заголовок сообщения:  Re: Тест на падение ББ

Роман М. писал(а):
Там была кнопка History, по которой можно было бы просмотреть историю изменений модуля.

Commit cf7bea25b81
Спасибо, сверил, все учтено было.

Автор:  Евгений Темиргалеев [ Понедельник, 22 Июль, 2013 19:45 ]
Заголовок сообщения:  Re: Тест на падение ББ

Роман М. писал(а):
Данная ошибка была исправлена пользователем luowy в списке рассылки Blackbox в сентябре 2012.
Это? viewtopic.php?p=74862#p74862

Автор:  Иван Денисов [ Понедельник, 22 Июль, 2013 19:59 ]
Заголовок сообщения:  Re: Тест на падение ББ

Евгений Темиргалеев писал(а):
Роман М. писал(а):
Данная ошибка была исправлена пользователем luowy в списке рассылки Blackbox в сентябре 2012.
Это? viewtopic.php?p=74862#p74862
Точно! Отсюда брал :)

Автор:  Роман М. [ Вторник, 23 Июль, 2013 09:05 ]
Заголовок сообщения:  Re: Тест на падение ББ

Да. Если патч был применён, то ошибка не воспроизведётся.
Но у меня получилось воспроизвести по крайней мере на сборке Оберонкора с патчами исправлений с сайта, скачанного несколько месяцев назад. Мне кажется, пусть уж лучше ошибка воспроизведётся в таком искусственном тесте, чем во время использования во время работы, как у Роберта Кэмпбелла, в списке рассылки.

Автор:  Евгений Темиргалеев [ Пятница, 26 Июль, 2013 20:22 ]
Заголовок сообщения:  Re: Тест на падение ББ

Роман М. писал(а):
Да. Если патч был применён, то ошибка не воспроизведётся.
Но у меня получилось воспроизвести по крайней мере на сборке Оберонкора с патчами исправлений с сайта...
Достаточно было поглядеть список изменений (http://oberoncore.ru/projects/bb16base-core) --- поелику Kernel там нет, то патч не применён, и ошибка воспроизводится.

Автор:  Роман М. [ Пятница, 26 Июль, 2013 20:36 ]
Заголовок сообщения:  Re: Тест на падение ББ

Евгений Темиргалеев писал(а):
Роман М. писал(а):
Да. Если патч был применён, то ошибка не воспроизведётся.
Но у меня получилось воспроизвести по крайней мере на сборке Оберонкора с патчами исправлений с сайта...
Достаточно было поглядеть список изменений (http://oberoncore.ru/projects/bb16base-core) --- поелику Kernel там нет, то патч не применён, и ошибка воспроизводится.
Что и требовалось доказать - ошибка воспроизводится. Всё, что мне было интересно знать. Ведь это и есть главная цель модуля TestGCAlloc1.
Я просто опасался того, что ошибка в ББ воспроизведётся не у всех. При условии, что патчи ещё не были применены, конечно. Иначе смысла проверять нет.

Автор:  Евгений Темиргалеев [ Пятница, 26 Июль, 2013 21:15 ]
Заголовок сообщения:  Re: Тест на падение ББ

Роман М. писал(а):
Я просто опасался того, что ошибка в ББ воспроизведётся не у всех.
Понял, спасибо.

Автор:  Роман М. [ Суббота, 13 Декабрь, 2014 13:59 ]
Заголовок сообщения:  Re: Тест на падение ББ

Ещё один тест на работу сборщика мусора при создании дерева, который перенёс с языка D. Использовал для проверки при нехватке памяти доступной ядру ББ. Кажется, не выставлял ранее.

Вложение:
TestTreeBench1.cp.txt [2.08 КБ]
Скачиваний: 945

Автор:  maliya [ Суббота, 13 Декабрь, 2014 16:45 ]
Заголовок сообщения:  Re: Тест на падение ББ

Роман М. писал(а):
Ещё один тест на работу сборщика мусора при создании дерева, который перенёс с языка D. Использовал для проверки при нехватке памяти доступной ядру ББ. Кажется, не выставлял ранее.

Вложение:
TestTreeBench1.cp.txt



what's the problem? nothing happend after test.

Автор:  Info21 [ Суббота, 13 Декабрь, 2014 17:35 ]
Заголовок сообщения:  Re: Тест на падение ББ

Мало кто насиловал сборщик мусора так, как я (точнее, мой софт: порядка 10 процов порядка 10 месяцев непрерывно).

Nothing happened.

Автор:  Роман М. [ Воскресенье, 14 Декабрь, 2014 12:58 ]
Заголовок сообщения:  Re: Тест на падение ББ

Если все патчи применены, то проблем с падением и не ожидается.
Этот тест не гарантирует падение, а только потенциально может выявить проблему в сборщике мусора.

Хочу обратить внимание, что проблемы со сборщиком мусора проявляются только в условиях нехватки памяти.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/