| 
     Hylafax Mailing List Archives
 | 
[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