HylaFAX The world's most advanced open source fax server

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

[hylafax-users] Bug in EXPAND1D




There is a bug in hylafax-v4.0pl2 in G3Decoder.c++ near line 272
in method "G3Decoder::decodeRow".

I don't know exactly the reason. The the bug occurs if the option "-n"
isn't set, i.e. there shell be a cover page. In this case
the "faxq" hangs.

I inserted a test in method faxQueueApp.c++
method MemoryDecoder::scanPageForBlanks near line 852:

  for (;;) {
    fprintf(mylogf, "scanPageForBlanks(1b)\n"); fflush(mylogf);
    (void) decodeRow(NULL, rowpixels);
    if (isBlank(lastRuns(), rowpixels)) {
          endOfPage = bp;                 // include one blank row
          nblanks = 0;
          do {
              fprintf(mylogf, "scanPageForBlanks(1c)nblanks = %d\n", nblanks); fflush(mylogf);
              nblanks++;
              (void) decodeRow(NULL, rowpixels);
              fprintf(mylogf, "scanPageForBlanks(1ccc)\n"); fflush(mylogf);
          } while (isBlank(lastRuns(), rowpixels));
          fprintf(mylogf, "scanPageForBlanks(1d)\n"); fflush(mylogf);
    }
    fprintf(mylogf, "scanPageForBlanks(1e)\n"); fflush(mylogf);
  }

wherby "mylogf" is a previously opend personally logfile.

If "nblanks" reaches the value 179 the logfile shows:

scanPageForBlanks(1c)nblanks = 179
scanPageForBlanks(1ccc)
scanPageForBlanks(1c)nblanks = 180

That is in case of 180th blank the "decodeRow" doesn't return.

I inserted in "G3Decoder.c++" near  line 272 in method
"G3Decoder::decodeRow":

      } else {
  #define badlength(a0,lastx) do {                        \
      nullrow = (a0 == 0);                                \
      if (nullrow && ++RTCrun == 6 && RTCrow == -1)       \
          RTCrow = rowref-6;                              \
      badPixelCount("1D", a0, lastx);                     \
      rowgood = FALSE;                                    \
  } while (0)
          fprintf(mylogf, "decodeRow(7b)\n");fflush(mylogf);
          EXPAND1D(Nop1d);
          fprintf(mylogf, "decodeRow(7c)\n");fflush(mylogf);
      Nop1d:;
  #undef  badlength

The output after scanPageForBlanks(1c)nblanks = 180 is:

  decodeRow(7b)

Therfore I assume the EXPAND1D hangs. To trace EXPAND1D
is too complicated to me.

--

Because it has to do with TIFF:  "ldd faxq" gives:

     libtiff.so.3 => /usr/lib/libtiff.so.3 (0x40015000)

Is there a known bug in some libtiff?

Or has somebody an idea what I could test next?

I use S.u.S.E-Linux-6.4. First I used the RPM from S.u.S.E-6.4
distribution. It was hylafax-41beta2. Then I downloaded  "hylafax-v4.0pl2"
and translated the source with gcc version 2.95.2 19991024 (release).

The effect is the same. If I don't set the "-n" option the
"faxq" hangs!

If I use the option -n the logfile alwasy shows

   decodeRow(7b)

followd by

  decodeRow(7c)

as expected.

???

-- 
J.Anders, Chemnitz, GERMANY (ja@informatik.tu-chemnitz.de)




____________________ HylaFAX(tm) Users Mailing List _______________________
 To unsub: mail -s unsubscribe hylafax-users-request@hylafax.org < /dev/null




Project hosted by iFAX Solutions