Demo Discussion
Forum Config Examples Contributions Vulnerabilities
  Discussion forum about ELOG, Page 547 of 808  Not logged in ELOG logo
icon4.gif   speed is very slow if logbook contains many entries, posted by Heiko Scheit on Wed Nov 12 12:25:44 2003 gmon.txt
This is not really a bug, but elogd was getting really slow with our
logbook.  It took about 4 1/2 seconds just to get the default page in
threaded mode with 15 entries.  The logbook has in total about 2000
entries, though.

After playing around with the compiler option '-gp' and gprof the
problem was found: loc() is called about 18000 times per logbook
access!  (Attached you can find the gprof output.  There might be
other places where to save time: e.g. getcfg().)  The function loc()
calls stat every time to check if the language file was updated and
this takes a long time especially over NFS.

The quick solution for me was to just replace loc() with 'char
*loc(char *orig) {return orig;}'.  Therefore, I cannot use the
localization that I used anymore, which is not a big problem at the
moment.  After that the time to download the default page was only
0.16 s; almost a factor of 30 faster!

I would suggest to only read the language file (AND also the config
file!) once upon startup.  After changing things one has to restart
elogd, which is not so nice, but the long delay is not acceptable.
Another option not to restart elogd is to make elogd respond to a
signal (e.g. kill -HUP) to reread the config and language files.
icon8.gif   segmentation fault, posted by Heiko Scheit on Fri Feb 13 12:18:19 2004 
Around line 2240 (in loc()) in elogd.c the following is written, 
which results in an infinite loop, since loc() recursively with
the same argument "Change %s".

   /* special case: "Change %s" */
   if (strstr(orig, "Change ")) {
      sprintf(result, loc("Change %s"), orig + 7);
      return result;
   }

For now I just commented these lines.
icon8.gif   elog (not elogd) submit does not work anymore, posted by Heiko Scheit on Fri Feb 13 12:21:25 2004 
Somehow elog does not use the -s option (subdir) anymore,
resulting in a 'HTTP/1.1 404 Not Found' error.

For now I am using elog from version 2.3.9 together with elogd v2.5.0,
which seems to work OK.
icon4.gif   -W -Wall options (using gcc), posted by Heiko Scheit on Fri Feb 13 12:25:15 2004 
Maybe consider using the options -W -Wall when compiling elogd.
There are several warning messages.
    icon5.gif   Re: -W -Wall options (using gcc), posted by Heiko Scheit on Mon Feb 16 16:40:50 2004 
> So I fixed all compiler generated warnigns except these:
> 
> [midas@pc2075 ~/elog]$ gcc -g -O -W -Wall -o elogd src/elogd.c
> src/elogd.c: In function `set_cookie':
> src/elogd.c:4675: warning: `%y' yields only last 2 digits of year
> src/elogd.c: In function `send_file_direct':
> src/elogd.c:5483: warning: `%y' yields only last 2 digits of year
> src/elogd.c: In function `show_elog_list':
> src/elogd.c:11938: warning: `%x' yields only last 2 digits of year in some 
> locales
> src/elogd.c:11957: warning: `%x' yields only last 2 digits of year in some 
> locales
> src/elogd.c:11979: warning: `%x' yields only last 2 digits of year in some 
> locales
> src/elogd.c:11987: warning: `%x' yields only last 2 digits of year in some 
> locales
> src/elogd.c: In function `ctrlc_handler':
> src/elogd.c:15864: warning: empty body in an if-statement
> src/elogd.c: In function `hup_handler':
> src/elogd.c:15870: warning: empty body in an if-statement
> 
> Do you know how to disable these warnings or any other workaround? I would 
> like to compile without any remaining warnings.


Have a look at the gcc info pages:

$ info gcc "invoking gcc" "warning options"
    icon5.gif   Re: -W -Wall options (using gcc), posted by Heiko Scheit on Mon Feb 16 17:18:39 2004 
> > Have a look at the gcc info pages:
> > 
> > $ info gcc "invoking gcc" "warning options"
> 
> Sure, I'm not stupid! 

  Sorry, didn't mean to offend you.

> I looked for ~10 minutes how to turn off the remaining 
> warnings, but I could not find it. The code is now correct, like I do want the 
> "%y" format specifier in the strftime() function, but the warning is wrong.

  One way to remove the warnings would be to use "%Y" in a separate strftime() call
  and then taking only the last two digits (characters) of that string.

  Something like:
old:
   strftime(str, sizeof(str), "%A, %d-%b-%y %H:%M:%S GMT", gmt);

new:
   strftime(str, sizeof(str), "%A, %d-%b-XX %H:%M:%S GMT", gmt);
   strftime(year, sizeof(year), "%Y", gmt);
   i=strstr(str,"XX"); /* find position of XX */
   if ( i+1 < sizeof(str) ) {
     str[i]  =year[3];
     str[i+1]=year[4];
   } else ...

  Somewhat cumbersome, but should work.  Maybe consider using the four 
  digit year directly, where possible.

  Gruss, Heiko
icon8.gif   elogd does not exit on SIGTERM, posted by Heiko Scheit on Wed Feb 18 16:54:27 2004 
When trying to stop elogd processes with the kill command
elogd exits only after access to the logbook.

It should exit immediately, maybe after some cleanup.
icon4.gif   too many <table> tags, posted by Heiko Scheit on Mon Aug 2 14:56:56 2004 elog_table.jpg
There are too many <table> tags when displaying a singel entry.  E.g.
in http://midas.psi.ch/elogs/Config+Examples/1 the row 'Configuration Name'
is not aligned with the others (see attachment).

Looking at the HTML one sees that there are <table> tags for each row
which should not be there:

<tr><td><table width="100%" cellpadding=0 cellspacing=0><tr><td nowrap
class="attribname">Author:</td><td class="attribvalue">
Stefan Ritt&nbsp</td>
</tr></table></td></tr>
ELOG V3.1.5-3fb85fa6