View Issue Details

IDProjectCategoryView StatusLast Update
0000837LDMud 3.5Implementationpublic2018-01-30 04:59
Reporterzesstra Assigned Tozesstra  
PriorityurgentSeveritycrashReproducibilityalways
Status resolvedResolutionfixed 
Platformx86_64OSMacOS XOS Version10.9.x
Product Version3.5.0 
Target Version3.5.0Fixed in Version3.5.0 
Summary0000837: struct_epilog(): crash updating function return types when encountering functions without return type
DescriptionWhen struct_epilog() tries to update function return values it accesses them without checking if the function actually was compiled with types.
5628 if (f->type->t_class == TCLASS_STRUCT
(lldb) print f->type
(lpctype_t *) $1 = 0x0000000000000000

Nastingly enough this does only occur when recompiling such a program the second time... ;-)
Steps To ReproduceLoading stest1 crashes the driver reliably:

> stest1.c
void create()
{
  object o = load_object("/players/zesstra/stest2");
  destruct(o);
  load_object("/players/zesstra/stest2");
}

> stest2.c
struct XXX { };
get() {;}
TagsNo tags attached.

Activities

zesstra

2015-01-08 22:24

administrator   ~0002242

After discussing with Gnomi: it seems only the function return values can have NULL as type. This requires special care for them and make the code harder to read and a lot more error-prone. We think the best is to always store a type. If we don't one from LPC source, we use TYPE_ANY.

zesstra

2015-02-01 20:03

administrator   ~0002245

Fix committed in revision c888b7d2a8038d4cb2013e1dbaabb03a4e277627 to master branch (see changeset 976 for details). Thank you for reporting!

zesstra

2018-01-29 19:59

administrator   ~0002312

Fix committed in revision c888b7d2a8038d4cb2013e1dbaabb03a4e277627 to master branch (see changeset 1417 for details). Thank you for reporting!

zesstra

2018-01-29 22:57

administrator   ~0002363

Fix committed in revision c888b7d2a8038d4cb2013e1dbaabb03a4e277627 to master branch (see changeset 2745 for details). Thank you for reporting!

zesstra

2018-01-30 04:59

administrator   ~0002414

Fix committed in revision c888b7d2a8038d4cb2013e1dbaabb03a4e277627 to master branch (see changeset 3830 for details). Thank you for reporting!

Issue History

Date Modified Username Field Change
2015-01-08 21:33 zesstra New Issue
2015-01-08 21:33 zesstra Description Updated
2015-01-08 22:24 zesstra Note Added: 0002242
2015-01-10 13:46 zesstra Assigned To => zesstra
2015-01-10 13:46 zesstra Status new => assigned
2015-02-01 20:03 zesstra Source_changeset_attached => ldmud.git master c888b7d2
2015-02-01 20:03 zesstra Note Added: 0002245
2015-02-01 20:03 zesstra Status assigned => resolved
2015-02-01 20:03 zesstra Resolution open => fixed
2015-02-01 20:34 zesstra Fixed in Version => 3.5.0
2018-01-29 19:59 zesstra Source_changeset_attached => ldmud.git master c888b7d2
2018-01-29 19:59 zesstra Note Added: 0002312
2018-01-29 22:57 zesstra Source_changeset_attached => ldmud.git master c888b7d2
2018-01-29 22:57 zesstra Note Added: 0002363
2018-01-30 04:59 zesstra Source_changeset_attached => ldmud.git master c888b7d2
2018-01-30 04:59 zesstra Note Added: 0002414