View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000406 | LDMud 3.3 | Runtime | public | 2005-10-07 05:02 | 2018-01-29 21:57 |
Reporter | Gnomi | Assigned To | |||
Priority | normal | Severity | crash | Reproducibility | sometimes |
Status | closed | Resolution | fixed | ||
Platform | i686 | OS | Debian GNU/Linux | OS Version | 3.1 |
Product Version | 3.3 | ||||
Fixed in Version | 3.3 | ||||
Summary | 0000406: Infinite recursion caused by errorf. | ||||
Description | An out of memory error within a catch() may cause an infinite recursion: Program terminated with signal 11, Segmentation fault. (gdb) bt #0 0x400d3561 in vfprintf () from /lib/libc.so.6 0000001 0x400ec0c3 in vsprintf () from /lib/libc.so.6 0000002 0x080de975 in errorf ( fmt=0x8100760 "(%s:%d) Out of memory (%lu bytes) for %s\n") at simulate.c:771 0000003 0x0807d656 in put_c_string (sp=0x811c944, p=0x81cde40 "*(interpret.c:2633) Out of memory (56 bytes) for string\n") at interpret.c:2633 0000004 0x080de9b9 in errorf ( fmt=0x8100760 "(%s:%d) Out of memory (%lu bytes) for %s\n") at simulate.c:787 0000005 0x0807d656 in put_c_string (sp=0x811c944, p=0x81cde40 "*(interpret.c:2633) Out of memory (56 bytes) for string\n") at interpret.c:2633 0000006 0x080de9b9 in errorf ( fmt=0x8100760 "(%s:%d) Out of memory (%lu bytes) for %s\n") at simulate.c:787 0000007 0x0807d656 in put_c_string (sp=0x811c944, p=0x81cde40 "*(interpret.c:2633) Out of memory (56 bytes) for string\n") at interpret.c:2633 0000008 0x080de9b9 in errorf ( fmt=0x8100760 "(%s:%d) Out of memory (%lu bytes) for %s\n") at simulate.c:787 0000009 0x0807d656 in put_c_string (sp=0x811c944, p=0x81cde40 "*(interpret.c:2633) Out of memory (56 bytes) for string\n") at interpret.c:2633 0000010 0x080de9b9 in errorf ( fmt=0x8100760 "(%s:%d) Out of memory (%lu bytes) for %s\n") at simulate.c:787 0000011 0x0807d656 in put_c_string (sp=0x811c944, p=0x81cde40 "*(interpret.c:2633) Out of memory (56 bytes) for string\n") at interpret.c:2633 0000012 0x080de9b9 in errorf ( fmt=0x8100760 "(%s:%d) Out of memory (%lu bytes) for %s\n") at simulate.c:787 0000013 0x0807d656 in put_c_string (sp=0x811c944, p=0x81cde40 "*(interpret.c:2633) Out of memory (56 bytes) for string\n") at interpret.c:2633 #14 0x080de9b9 in errorf ( fmt=0x8100760 "(%s:%d) Out of memory (%lu bytes) for %s\n") at simulate.c:787 #15 0x0807d656 in put_c_string (sp=0x811c944, p=0x81cde40 "*(interpret.c:2633) Out of memory (56 bytes) for string\n") at interpret.c:2633 #16 0x080de9b9 in errorf ( fmt=0x8100760 "(%s:%d) Out of memory (%lu bytes) for %s\n") at simulate.c:78Quit ... and so on. To save the error message for catch errorf() tries to allocate memory and thus causing an out of memory error again. Greetings, Gnomi | ||||
Tags | No tags attached. | ||||
|
I have added code to check for an out-of-memory situation, in which case the catch() will be ignored. This should keep the driver up long enough to run a GC. |
Date Modified | Username | Field | Change |
---|---|---|---|
2005-10-07 05:02 | Gnomi | New Issue | |
2005-10-09 23:01 |
|
Status | new => resolved |
2005-10-09 23:01 |
|
Fixed in Version | => 3.3 |
2005-10-09 23:01 |
|
Resolution | open => fixed |
2005-10-09 23:01 |
|
Assigned To | => lars |
2005-10-09 23:01 |
|
Note Added: 0000392 | |
2005-11-24 14:32 |
|
Status | resolved => closed |
2010-11-16 09:42 |
|
Source_changeset_attached | => ldmud.git master ffad1853 |
2018-01-29 18:59 |
|
Source_changeset_attached | => ldmud.git master ffad1853 |
2018-01-29 21:57 |
|
Source_changeset_attached | => ldmud.git master ffad1853 |