ID |
Date |
Icon |
Author |
Author Email |
Category |
OS |
ELOG Version |
Subject |
67122
|
Tue Sep 13 11:54:16 2011 |
| Andreas Luedeke | andreas.luedeke@psi.ch | Bug report | Linux | 2.9.0-2414 | Elog 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 |
| Andreas Luedeke | andreas.luedeke@psi.ch | Bug fix | Linux | 2.9.0-2414 | Re: 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 |
| Andreas Luedeke | andreas.luedeke@psi.ch | Bug report | Linux | 2.9.0-2414 | elogd 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; |
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 |
67086
|
Wed Jul 6 12:06:01 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: |
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 |
67087
|
Wed Jul 6 12:36:33 2011 |
| David Pilgram | David.Pilgram@epost.org.uk | Bug report | Linux | 2.9.0-2413 | Re: ELOG deamon stuck in find_thread_head() |
Soren Poulsen wrote: |
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
|
Soren, you're not alone! I've had similar problems, as did Sara Vanini (elog:67077).
In my case, it is because the "move" or "copy" function does not move all the messages in very long threads. To be more precise, elog will crash in the attempt to move a long thread - say over 40 replies, I don't know for sure. Sometimes it has already moved the entire thread before it crashes, sometimes not. I'd not flagged it up as an issue because I could not be sure it was not a memory issue with the old (>12 years) linux box I was using earlier this year, but it still happens on this new (to me, only 3 years old) linux box.
Whether it is the number of entries, the total memory size of the thread or some combination, I don't know.
I've found that in the "move" case, it has not deleted all the messages from the donor thread, so that there is a semi-thread still hidden there. Should one by chance select that semi-thread, (because it is found during a search) elog goes into infinate loop, which requires a reboot of this linux box to fix. Certainly the pinning down the issue to the missing entry referenced by an <i>In reply to:</i> explains this part of the issue. Of course, deletion of one entry within a thread, or other adjustments will do the same thing, just as you (Soren) point out above.
If it happens to me, I will go in to the yymmdda.log files and fix the problem, be it deleting the entries of the semi-thread, moving across missing entries from the donor to the acceptor logbooks, adjusting the <i>Reply:</i> and <i>In reply to:</i> lines, but that is quite a time consuming and error prone exercise. |
67088
|
Wed Jul 6 12:45:19 2011 |
| David Pilgram | David.Pilgram@epost.org.uk | Question | All | 2.9.0-2411 | Attachments in a different logbook to the entry logbook | Is it possible to have an attachment to an entry in a different directory to the working directory of the logbook being used?
By which I mean, if you have in logbook hidden the attachment files
../logbooks/hidden/110705_235520_whatthis-0.png
../logbooks/hidden/110705_235520_whatthis.pdf
that an entry in another logbook, public, can use the entries in hidden to show them (and do everything that you can do with an attachment)
without making another copy in public?
I see that if, working in public, you attach the .pdf file in hidden, the files get copied across as
../logbooks/public/110705_235520_whatthis-0.png
../logbooks/public/110705_235520_whatthis.pdf
that is, with the original (hidden) timestamp, and no second time stamp superimposed. From which you can gather I've been playing around, manually editing a yymmdda.log file to try and get the result I want, even if for the moment it cannot be done via elog; but without success, although there were some bizarre interpretations by the elog program of the edited yymmdda.log file, depending upon what I tried.
For one entry, it is of course no big deal, copying the files into the public directory, but if you are dealing with multiple huge entries, it does seem wasteful of HD space
But my reason for this is that hidden has restricted access, whereas public has general access. The attachments themselves are not restricted, but comments, history etc around them in the restricted access logbook should not become available to the general viewer. |
|