ID |
Date |
Icon |
Author |
Author Email |
Category |
OS |
ELOG Version |
Subject |
67052
|
Thu Apr 21 21:06:20 2011 |
| Mark Bergman | mark.bergman@uphs.upenn.edu | Bug report | Linux | 2.9.0 | Re: elog 2.8.0 as daemon crashes when editing selected threaded list |
Mark Bergman wrote: |
I recently upgraded elog from 2.7.8 to 2.8.0 (and moved servers, removed unused logbooks, etc.). I'm now having a problem where elog consistently crashes when attempting to edit multiple entries. This is a very common use case, as we use a "status" field, set to "open" or "closed" to track problems. When a problem is resolved, we will go to the "list" display, set it to "threaded", "select" the thread, and then edit it, to change the status field for all posts in the thread to "closed".
Now, as soon as the "edit" button is clicked, elog crashes. This happens on every thread and logbook that I've tried. The elog logfile itself doesn't show anything useful.
However, if eLog is run with "-v" in place of "-D", it does not crash.
Environment:
CentOS 5.4
eLog 2.8.0 built Aug 5 2010, 12:24:11
|
I'm now running eLog 2.9.0 and seeing the same crashes. However, I've got some more information that may be helpful.
The crash seems to be directly related to the order of replies in the thread. For example, in this thread I am replying to the original entry. The original entry has 2 children (the entries are siblings) and no grandchildren.
In our installation, eLog crashes consistently under the following conditions:
go to the "list" display
set it to "threaded"
"select" a thread that has siblings at any generation of replies
choose "edit"
If the selected thread only has one entry at any generation, eLog does not crash.
Here's a horrible attempt at a display of two message threads. Note that in the first example, there are 2 replies at the same generation (siblings)--both the person who responded and the original submitter replied to the initial submission. After that, all replies were to successive generations.
-------------- Causes eLog to Crash ------------------
! Full Name (submitter) module failure
=> Full Name (submitter) Re: module failure
=> Full Name (replier) Re: module failure
=> Full Name (submitter) Re: Re: module failure
=> Full Name (submitter) Re: Re: Re: module failue
------------------------------------------------------
-------------- No eLog Problem ------------------
! Full Name (submitter) Labwide failure of mcc
=> Full Name (replier) Re: Labwide failure of mcc
=> Full Name (submitter) Re: Re: Labwide failure of mcc
=> Full Name (replier) Re: Re: Re: Labwide failure of mcc
------------------------------------------------------
|
67054
|
Sat Apr 23 08:56:26 2011 |
| Pelle | pelle@sm4xiu.eu | Info | Linux | 2,3.8 | Re: elog2sql - a script to convert elog logbooks to a MySQL database |
I know this thread was started 2003 but if anyone have this MySQL export script please attach it to this thread.
Thanks,
Pelle |
67055
|
Sat Apr 23 14:32:38 2011 |
| Pelle | Sorry, found it | Info | Linux | 2,3.8 | Re: elog2sql - a script to convert elog logbooks to a MySQL database | > > I know this thread was started 2003 but if anyone have this MySQL export script please attach it to this thread. > > Thanks, > > Pelle
Sorry, found it in the contribution list https://midas.psi.ch/elogs/Contributions/5 |
67056
|
Thu Apr 28 09:27:52 2011 |
| Ben Shepherd | bjs54@dl.ac.uk | Bug report | Linux | 2.7.8-2278 | Hyphens in email addresses | Hi,
I have a user on our system who keeps getting shut out - she can register, but after a few days her login always stops working. The only thing that I can see that's different about her is that her email address has a hyphen in it (firstname.last-name@stfc.ac.uk). I have tried registering myself with a hyphenated email address, and the same thing happens. Any idea what might be going on here? Is eLog doing some sort of automatic cleanup after a day or two, and rejecting a confirmed email address because it's got a hyphen in it?
Thanks
Ben |
67059
|
Sat Apr 30 19:45:30 2011 |
| soren poulsen | soren.poulsen@cern.ch | Bug report | Linux | 2.9.0-2413 | ELOG 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 |
| Soren Poulsen | soren.poulsen@cern.ch | Bug report | Linux | 2.9.0-2413 | Re: 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 |
67065
|
Sun May 8 22:33:15 2011 |
| Ryan | ryan.hoitt@intelsat.com | Bug report | Linux | 2.9.0 | Re: elog 2.8.0 as daemon crashes when editing selected threaded list |
Mark Bergman wrote: |
Mark Bergman wrote: |
I recently upgraded elog from 2.7.8 to 2.8.0 (and moved servers, removed unused logbooks, etc.). I'm now having a problem where elog consistently crashes when attempting to edit multiple entries. This is a very common use case, as we use a "status" field, set to "open" or "closed" to track problems. When a problem is resolved, we will go to the "list" display, set it to "threaded", "select" the thread, and then edit it, to change the status field for all posts in the thread to "closed".
Now, as soon as the "edit" button is clicked, elog crashes. This happens on every thread and logbook that I've tried. The elog logfile itself doesn't show anything useful.
However, if eLog is run with "-v" in place of "-D", it does not crash.
Environment:
CentOS 5.4
eLog 2.8.0 built Aug 5 2010, 12:24:11
|
I'm now running eLog 2.9.0 and seeing the same crashes. However, I've got some more information that may be helpful.
The crash seems to be directly related to the order of replies in the thread. For example, in this thread I am replying to the original entry. The original entry has 2 children (the entries are siblings) and no grandchildren.
In our installation, eLog crashes consistently under the following conditions:
go to the "list" display
set it to "threaded"
"select" a thread that has siblings at any generation of replies
choose "edit"
If the selected thread only has one entry at any generation, eLog does not crash.
Here's a horrible attempt at a display of two message threads. Note that in the first example, there are 2 replies at the same generation (siblings)--both the person who responded and the original submitter replied to the initial submission. After that, all replies were to successive generations.
-------------- Causes eLog to Crash ------------------
! Full Name (submitter) module failure
=> Full Name (submitter) Re: module failure
=> Full Name (replier) Re: module failure
=> Full Name (submitter) Re: Re: module failure
&nb sp; => Full Name (submitter) Re: Re: Re: module failue
------------------------------------------------------
-------------- No eLog Problem ------------------
! Full Name (submitter) Labwide failure of mcc
=> Full Name (replier) Re: Labwide failure of mcc
=> Full Name (submitter) Re: Re: Labwide failure of mcc
&nb sp; => Full Name (replier) Re: Re: Re: Labwide failure of mcc
------------------------------------------------------
|
I am also experiencing the same exact problem as explained above. It only seems to happen when a part of the title has changed. I will include my config for an example. Make a few entries, then change the "Customer" paramater. Then try and edit an entry in the thread.
Enable attachments = 1
Attributes = Employee, Customer, XXX-ID, XXXX Number, SCD, Type, Status, Folder Created, XXXX Received, Equipment Installed, XXX Carrier Up, Customer Carrier Up, QA Completed
Thread display = $Customer - $SLR-ID - $Type - $Status - SCD: $SCD - XXXX: $XXXX Number
Propagate attributes = Status
Locked Attributes = Employee
Options Type = Activation, Termination, Change
Options Folder Created = Yes, No, N/A
Options XXXX Received = Yes, No, N/A
Options Equipment Installed = Yes, No, N/A
Options XXX Carrier Up = Yes, No, N/A
Options Customer Carrier Up = Yes, No, N/A
Options QA Completed = Yes, No
Entries per page = 100
Preset Text = $short_name @ $utcdate -
Append on reply = $short_name @ $utcdate -
Locked Attributes = Employee
Preset Employee = $long_name
Options Status = Open, Closed
Quick Filter = Status, Type
Type SCD = datetime
Summary lines = 0
Enable Attachments = 0
Suppress default = 2
Entries per page = 10
Suppress Email to users = 1
Display mode = threaded
Collapse to last = 1
Expand default = 0
Subst on reply Employee = $long_name
Faulting application elogd.exe, version 0.0.0.0, faulting module elogd.exe, version 0.0.0.0, fault address 0x000646c7. |
67069
|
Fri May 20 22:45:00 2011 |
| John M O'Donnell | odonnell@lanl.gov | Bug fix | Linux | svn 2414 | my_shell (OS_UNIX) uses /tmp/elog_shell - conflict when more than one elogd runs at the same time | all instances of elogd use the same file name in /tmp when calling my_shell. This can cause some inconsistent behavior when two or more copies of elogd are runnnig at the same time. (eg. one might detect ImageMagik is installed, and the other not,)
The propsed solution is to have the parent read from a pipe to the child rather from a file. A patch is attached. |
Attachment 1: elogd.c.patch_shellPipe
|
--- elogd.c.orig 2011-05-20 13:28:48.000000000 -0600
+++ elogd.c 2011-05-20 14:16:12.000000000 -0600
@@ -866,25 +866,27 @@
#ifdef OS_UNIX
pid_t child_pid;
- int fh, status, i;
+ int fd[2], status, i;
char str[256];
+ /* create pipe for parent<->child communication */
+ if (pipe(fd) < 0)
+ return 0;
+
if ((child_pid = fork()) < 0)
return 0;
else if (child_pid > 0) {
- /* parent process waits for child */
- waitpid(child_pid, &status, 0);
+
+ /* parent does not write to child */
+ close(fd[1]);
/* read back result */
memset(result, 0, size);
- fh = open("/tmp/elog-shell", O_RDONLY);
- if (fh > 0) {
- i = read(fh, result, size);
- close(fh);
- }
+ i = read(fd[0], result, size);
+ close(fd[0]);
- /* remove temporary file */
- remove("/tmp/elog-shell");
+ /* parent process waits for child */
+ waitpid(child_pid, &status, 0);
/* strip trailing CR/LF */
while (strlen(result) > 0 && (result[strlen(result) - 1] == '\r' || result[strlen(result) - 1] == '\n'))
@@ -926,8 +928,7 @@
eprintf("Falling back to user \"%s\"\n", str);
}
- /* execute shell with redirection to /tmp/elog-shell */
- sprintf(str, "/bin/sh -c \"%s\" > /tmp/elog-shell 2>&1", cmd);
+ /* execute command with redirection to pipe to parent */
if (is_verbose()) {
efputs("Going to execute: ");
@@ -935,7 +936,17 @@
efputs("\n");
}
- system(str);
+ /* redirect stdout/stderr to pipe for parent to read */
+ close(STDOUT_FILENO); dup2(fd[1], STDOUT_FILENO);
+ close(STDERR_FILENO); dup2(fd[1], STDERR_FILENO);
+ /* child does not read the pipe */
+ close(fd[0]);
+ /* child nolonger uses fd[1] - use stderr or stdout instead */
+ close(fd[1]);
+
+ if (system(cmd) == -1) {
+ fprintf(stderr, "unable to execute command: %s\n", cmd);
+ }
_exit(0);
}
|
|