Demo Discussion
Forum Config Examples Contributions Vulnerabilities
  Discussion forum about ELOG, Page 354 of 807  Not logged in ELOG logo
ID Date Icon Author Author Email Category OS ELOG Versiondown Subject
  67084   Mon Jun 20 05:31:31 2011 Warning Andreas Luedekeandreas.luedeke@psi.chBug reportLinux2.9.0-2414segmentation fault when "restrict edit" is used and "new" is allowed for anonymous users
The simple config file below produces a segmentation fault when elogd is started,
http://localhost/Test/?cmd=New
is opened in the browser and then e.g. "Entry" is switched to "Problem".

gdb shows the following output:

(gdb) run -c /usr/local/elog/elogd.cfg
Starting program: /usr/local/sbin/elogd -c /usr/local/elog/elogd.cfg
elogd 2.9.0 built Jun 20 2011, 04:57:23 revision 2414
Falling back to default group "elog"
Falling back to default user "elog"
FCKedit detected
Falling back to default group "elog"
Falling back to default user "elog"
ImageMagick detected
Indexing logbooks ... done
Server listening on port 80 ...

Program received signal SIGSEGV, Segmentation fault.
0x080a2940 in get_user_line (lbs=0xae3c1c0, user=0x0, password=0x0, full_name=0xbfca1690 "", email=0x0, email_notify=0x0,
last_logout=0x0, inactive=0x0) at src/elogd.c:24864
24864 if (!str[0] || !user[0])
Attachment 1: elogd.cfg
[global]
Authentication = File
Password file = passwd.txt
Restrict edit = 1

[Test]
Guest Menu commands = New, List, Login, Help
Guest List Menu commands = New, Login, Help
Comment = Test ELog
Attributes      = Author, Entry, Title
List display    = ID, Author, Entry, Title
Start page = ?rsort=When

# Author
Preset Author = $long_name
Locked Attributes = Author
# Entry
Options Entry = Problem{1}, Measurement{2}

  67085   Mon Jun 20 17:53:58 2011 Reply Stefan Rittstefan.ritt@psi.chBug reportLinux2.9.0-2414Re: segmentation fault when "restrict edit" is used and "new" is allowed for anonymous users
You are the first one allowing guests to enter new entries, so this probes a code path which was never used before. I fixed the crash in SVN revision 2416, but it might be that there are more issues with that. Just keep reporting.
  67122   Tue Sep 13 11:54:16 2011 Warning Andreas Luedekeandreas.luedeke@psi.chBug reportLinux2.9.0-2414Elog crashes with URL find npp=0
Some user wanted to modify the URL by hand and succeeded to crash the elogd process with npp=now
It appears that npp=0 crashes elogd with the following error message:

Program received signal SIGFPE, Arithmetic exception.
0x0808eba2 in show_elog_list (lbs=0xab3c770, past_n=0, last_n=0, page_n=1,
    default_page=1, info=0x0) at src/elogd.c:20214
20214            sprintf(str + strlen(str), loc("Page %d of %d"), page_n, (n_msg - 1) / n_page + 1);

I guess this bug is not OS dependent: you can crash every logbook that you can search ;-)
  67123   Tue Sep 13 13:38:19 2011 Idea Andreas Luedekeandreas.luedeke@psi.chBug fixLinux2.9.0-2414Re: Elog crashes with URL find npp=0
> [...] It appears that npp=0 crashes elogd [...]

Here's a patch: search for "npp" in src/elogd.c and add the following line:
  if (n_page<=0) n_page = 20;

Here's the diff output for version 2.9.0-2414
*** 20092,20096 ****
     if (isparam("npp"))
        n_page = atoi(getparam("npp"));
+    if (n_page<=0) n_page = 20;

     if (page_mid) {
  67138   Thu Oct 27 11:29:08 2011 Question Andreas Luedekeandreas.luedeke@psi.chBug reportLinux2.9.0-2414elogd crash for special query
A query to a logbook can crash the demon.

Query:
https://pc8059.psi.ch:444/SwissFEL+Injector/?jcmd=Find&m0a=10&d0a=27&y0a=2011&npp=1&reverse=0

gdb dump:
SSLServer listening on port 444 ...

Program received signal SIGSEGV, Segmentation fault.
show_elog_list (lbs=0xae72618, past_n=0, last_n=0, page_n=0, default_page=1, info=0x0) at src/elogd.c:20797
20797         message_id = msg_list[index].lbs->el_index[msg_list[index].index].message_id;
Attachment 1: elogd.cfg
[global]
SMTP host = mail.psi.ch
Language = german_UTF8
charset = UTF-8
SSL = 1
Port = 444
Authentication = Kerberos, File
Password file = passwd.txt

Admin user = luedeke
Allow password change = 0
Self register = 0
Allowed encoding = 5
Allow HTML = 1
Suppress execute default = 0
Tab cellpadding = 2
Logfile = elog.log

Date format = %a %d-%b-%Y 
Time format = %a %d-%b-%y %H:%M


[SwissFEL Injector]
Default encoding = 2
Comment = SwissFEL Injector Beam Development
Guest Menu commands = New, Find, List, Login, Help
Guest List Menu commands = New, Find, Login, Help
Restrict edit time = 48
Admin user = luedeke, robot
Login expiration = 8
Reverse sort = 1
Thumbnail size = 792>
Attributes      = When, Author, Entry, Status, System, Downtime, Beamtime, Coordinator, Shiftleader, Operators, Participants, Title
List display    = ID, When, Author, Entry, Status, System, Title
Thread display  = $entry time, $Author, $Entry, $Status, $System, "$Title"
Quick filter    = When, Entry, Status
Start page = ?rsort=When
Use Email Subject = ELOG $logbook: $Entry: $Title

# When
Type When = datetime
Preset When = $date
# Author
#Preset Author = $long_name
#Preset on reply Author = $long_name
Preset on first reply Titel = Re: $Titel
#Locked Attributes = Author
Preset Author = $shell(if [ $short_name = "Anonym" ] ;then echo $Author;else echo \"$long_name, $Author\";fi)
Preset on reply Author = $long_name
# Entry
Options Entry = Problem{1}, Measurement{2}, Shift-Summary{3}, Info{4}, Alarms{5}

# depending on Entry, but not specific to one attribute
{1,5} Show Attributes Edit = When, Author, Entry, Status, System, Title
{1,5} Show Attributes      = When, Author, Entry, Status, System, Title
{2,4} Show Attributes Edit = When, Author, Entry, System, Title
{2,4} Show Attributes      = When, Author, Entry, System, Title
{3}   Show Attributes Edit = When, Author, Entry, Coordinator, Shiftleader, Operators, Participants, Downtime, Beamtime, Title
{3} Required attributes = Coordinator, Shiftleader, Operators, Downtime, Beamtime, Title
{3} Preset Title = Shift on $date
{1,2,4,5} Preset Title = 
{1,5} Required attributes = When, Author, Entry, Status

# Status
{1} Options Status = open, work-in-progress, closed
{1} Preset Status = open
{5} Options Status = canceled, disabled, enabled
{5} Preset Status = disabled
# System
{1,4,5} Options System = Beamdynamics, Controls, Diagnostics, Mains

#{2} System  = free text for measurement software, incl. version
Show Attributes Edit = When, Author, Entry, Title
# Downtime (only for Shift-Summary{3})
Type Downtime = numeric
Comment Downtime = hours of shift not usable (waiting for repair, etc.)
Format Downtime = 0, attribname, attribvalue, 8, 3
# Beamtime (only for Shift-Summary{3})
Type Beamtime = numeric
Comment Beamtime = hours of shift useable for measurements
Format Beamtime = 1, attribname, attribvalue, 8, 3
# Text
{1,2,4,5} Preset Text = /usr/local/elog/logbooks/inc/clear.html
{3} Preset Text = /usr/local/elog/logbooks/inc/FIN-summary.html
  67059   Sat Apr 30 19:45:30 2011 Question soren poulsensoren.poulsen@cern.chBug reportLinux2.9.0-2413ELOG deamon stuck in find_thread_head()

ELOG seems to enter a loop when you do certain opeations on certain messages: I moved a message to a different logbook and the deamon just gets stuck.

If I restart the daemon, the message was in fact moved: I can move it back to its original destination without problems.

I started in GDB and break with ctrl-C when the process gets stuck, to be told :

Program received signal SIGINT, Interrupt.
0x000000000040a968 in find_thread_head ()

I then made a core dump.

I put the files here: http://cern.ch/poulsen2/elog-error-report-110430.zip (they are too big to upload).

I get into the same problem in other circumstances such as when opening some threads (maybe because they contain "Reply-to" references to non-existing messages, but I have problems reproducing this on the test installation.

I should maybe also submit the incriminating thread.

Soren

 

  67063   Tue May 3 17:35:57 2011 Reply Soren Poulsensoren.poulsen@cern.chBug reportLinux2.9.0-2413Re: ELOG deamon stuck in find_thread_head()

soren poulsen wrote:

ELOG seems to enter a loop when you do certain opeations on certain messages: I moved a message to a different logbook and the deamon just gets stuck.

If I restart the daemon, the message was in fact moved: I can move it back to its original destination without problems.

I started in GDB and break with ctrl-C when the process gets stuck, to be told :

Program received signal SIGINT, Interrupt.
0x000000000040a968 in find_thread_head ()

I then made a core dump.

I put the files here: http://cern.ch/poulsen2/elog-error-report-110430.zip (they are too big to upload).

I get into the same problem in other circumstances such as when opening some threads (maybe because they contain "Reply-to" references to non-existing messages, but I have problems reproducing this on the test installation.

I should maybe also submit the incriminating thread.

Soren

 

 1. It appears that some times find_thread_head is called with message references that do not exist. That is not good.

I put in a little check like this  before seeing if the message has an "in_reply_to" reference:

The line:

if (lbs->el_index[i].in_reply_to)

becomes:

if (i < *lbs->n_el_index && lbs->el_index[i].in_reply_to)
 

2. The trouble started when I deleted a message in the middle of a thread, which left the thread badly "connected" (references to a deleted message).

3. Also, when a thread is badly connected, it is a problem moving messages to a different logbook. ELOG complains that it cannot access the message (with the invalid reference). But ELOG should ignore it, since the message was deleted.

 

Soren

  67086   Wed Jul 6 12:06:01 2011 Angy Soren Poulsensoren.poulsen@cern.chBug reportLinux2.9.0-2413Re: ELOG deamon stuck in find_thread_head()

Soren Poulsen wrote:

soren poulsen wrote:

ELOG seems to enter a loop when you do certain opeations on certain messages: I moved a message to a different logbook and the deamon just gets stuck.

If I restart the daemon, the message was in fact moved: I can move it back to its original destination without problems.

I started in GDB and break with ctrl-C when the process gets stuck, to be told :

Program received signal SIGINT, Interrupt.
0x000000000040a968 in find_thread_head ()

I then made a core dump.

I put the files here: http://cern.ch/poulsen2/elog-error-report-110430.zip (they are too big to upload).

I get into the same problem in other circumstances such as when opening some threads (maybe because they contain "Reply-to" references to non-existing messages, but I have problems reproducing this on the test installation.

I should maybe also submit the incriminating thread.

Soren

 

 1. It appears that some times find_thread_head is called with message references that do not exist. That is not good.

I put in a little check like this  before seeing if the message has an "in_reply_to" reference:

The line:

if (lbs->el_index[i].in_reply_to)

becomes:

if (i < *lbs->n_el_index && lbs->el_index[i].in_reply_to)
 

2. The trouble started when I deleted a message in the middle of a thread, which left the thread badly "connected" (references to a deleted message).

3. Also, when a thread is badly connected, it is a problem moving messages to a different logbook. ELOG complains that it cannot access the message (with the invalid reference). But ELOG should ignore it, since the message was deleted.

 

Soren

 It would be nice to have this corrected. The problem occurs when you select (read) a message which refers to another message via "In-reply-to", and this message does not exist.

Soren

ELOG V3.1.5-3fb85fa6