Bug 21048 - Не закрашиваются прямоугольники
: Не закрашиваются прямоугольники
Status: CLOSED NOTABUG
: Sisyphus
(All bugs in Sisyphus/perl-GD2)
: unstable
: all Linux
: P3 major
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2009-08-12 19:32 by
Modified: 2009-08-13 13:38 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2009-08-12 19:32:52
Не закрашиваются прямоугольники. Ошибка имеет процессорозависимый характер

    $im->filledRectangle(50,50,100,100,15); -- закрашивается
    $im->filledRectangle(200,200,150,150,15); -- не закрашивается

[user@server ~]$ rpm -q perl-GD2
perl-GD2-2.35-alt1

повторяется на процессоре
[user@server ~]$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 6
model name      : Celeron (Mendocino)
stepping        : 5
cpu MHz         : 300.708
cache size      : 128 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 mtrr pge mca cmov pat
pse36 mmx fxsr up
bogomips        : 602.16
------- Comment #1 From 2009-08-12 19:42:24 -------
Актуальный perl-GD:

# rpm -q perl-GD
perl-GD-2.41-alt1
------- Comment #2 From 2009-08-12 20:27:17 -------
(В ответ на комментарий №1)
> Актуальный perl-GD:
> 
> # rpm -q perl-GD
> perl-GD-2.41-alt1

Не могу на роутере проверить -- стоит не правильная версия librpm
------- Comment #3 From 2009-08-13 11:36:02 -------
(В ответ на комментарий №0)
> Не закрашиваются прямоугольники. Ошибка имеет процессорозависимый характер

То есть, версии релевантных пакетов на машинах с разными процессорами были
одинаковы? Только тогда наблюдая разное поведение программ можно высказывать
гипотезу о процессорозависимости.

>     $im->filledRectangle(50,50,100,100,15); -- закрашивается
>     $im->filledRectangle(200,200,150,150,15); -- не закрашивается

На perl-GD-2.41-alt1 с libgd2-2.0.35-alt2 второй пример у меня тоже закрашивает
прямоугольник.

Вообще говоря, во втором примере координаты указаны несколько нелогично. При
вызове этой функции сначала указываются координаты левого верхнего угла, затем
правого нижнего. В данном случае они указаны наоборот. Поведение функции при не
совсем корректных входных данных может быть и не тем, которое ожидается
(принцип "garbage in - garbage out") и считать его ошибочным можно только, если
оно отличается от документированного.

При этом perl-GD выступает не более чем оберткой для функций libgd и в данном
случае просто передает полученные параметры в вызов функции
gdImageFilledRectangle.

Резюме: 
1. На текущей пакетной базе Сизифа не воспроизводится.
2. Даже если описанное поведение считать багом, это бага libgd, а не perl-GD.
------- Comment #4 From 2009-08-13 11:53:46 -------
Для информации: в актуальной сборке libgd функция gdImageFilledRectangle
содержит код для обмена местами координат, если они указаны в неправильном
порядке:
  if (x1 > x2) {
          x = x1;
          x1 = x2;
          x2 = x;
  }
  if (y1 > y2) {
          y = y1;
          y1 = y2;
          y2 = y;
  }

Этот код добавлен в libgd в CVS Revision 1.49.2.8, коммит от 6 мая 2007 года.
------- Comment #5 From 2009-08-13 13:18:30 -------
> 
> Резюме: 
> 1. На текущей пакетной базе Сизифа не воспроизводится.
> 2. Даже если описанное поведение считать багом, это бага libgd, а не perl-GD.

У меня воспроизводится только на одном компьютере. Процессор я указал. Очень
похоже нарвались на оптимизацию.
[user@server ~]$ rpm -qa | grep libgd
libgd2-2.0.34-alt2
------- Comment #6 From 2009-08-13 13:27:53 -------
(В ответ на комментарий №5)
> > 
> > Резюме: 
> > 1. На текущей пакетной базе Сизифа не воспроизводится.
> > 2. Даже если описанное поведение считать багом, это бага libgd, а не perl-GD.
> 
> У меня воспроизводится только на одном компьютере. Процессор я указал. Очень
> похоже нарвались на оптимизацию.
> [user@server ~]$ rpm -qa | grep libgd
> libgd2-2.0.34-alt2

Да никакая оптимизация здесь ни при чем! Я же в предыдущем комментарии привёл
исчерпывающую информацию! И процессор тут ни при чем!

Вы указали в примере когда прямоугольники не закрашиваются НЕВЕРНЫЕ параметры
для функции. Код, который это проверяет и переставляет параметры в правильном
порядке добавлен в libgd 6 мая 2007, а у Вас стоит пакет с версией libgd
2.0.34, которая вышла в феврале 2007!!
------- Comment #7 From 2009-08-13 13:31:43 -------
> Вы указали в примере когда прямоугольники не закрашиваются НЕВЕРНЫЕ параметры
> для функции. Код, который это проверяет и переставляет параметры в правильном
> порядке добавлен в libgd 6 мая 2007, а у Вас стоит пакет с версией libgd
> 2.0.34, которая вышла в феврале 2007!!
Ясно. Спасибо.