View Issue Details

IDProjectCategoryView StatusLast Update
0000867LDMudRuntimepublic2018-10-23 16:28
Reporterzesstra Assigned ToGnomi  
PrioritynormalSeveritycrashReproducibilitysometimes
Status resolvedResolutionfixed 
Platformx86_64OSMacOS XOS Version10.9.x
Summary0000867: Crash when applying lambda
DescriptionWhen creating an object with the program given below, the driver usually crashes with an "'illegal' instruction encountered." or a segmentation fault 11. One reported "Bad stack at F_RETRN, 1 values too high"
Other possibilities are various errors like "Bad arg 1 to add_action(): got 'invalid', expected 'string/closure'.", "Undefined function: Dangling function call in lambda closure", "Bad arg 1 to x++: got 'number', expected 'lvalue'."

The exact error seems to be influenced by the state of the compiler. If it does not crash, various ones can be provoked by compiling different programs before the test program.

2018.10.22 21:35:25 'illegal' instruction encountered.
2018.10.22 21:35:25 Current object was test
test test.c line 5
0x10d58c022: 97 256 clear_locals (0: 28) line 5
0x10d58c025: 22 61532 closure (0: 28) line 6
0x10d58c02a: 22 61480 closure (1: 29) line 8
0x10d58c02f: 22 61501 closure (2: 30) line 10
0x10d58c034: 22 59392 closure (3: 31) line 12
0x10d58c039: 156 1 aggregate (4: 32) line 13
0x10d58c03c: 22 61773 closure (4: 32) line 14
0x10d58c041: 16 const1 (5: 33) line 15
0x10d58c042: 156 4 aggregate (6: 34) line 16
0x10d58c045: 18 9 clit (3: 31) line 17
0x10d58c047: 156 3 aggregate (4: 32) line 18
0x10d58c04a: 156 2 aggregate (2: 30) line 19
0x10d58c04d: 125 0 push_local_variable_lvalue (1: 29)
0x10d58c04f: 41 (void)= (2: 30)
0x10d58c050: 10 0 cstring0 (0: 28) line 21
0x10d58c052: 276 55 quote (1: 29)
0x10d58c054: 22 61773 closure (1: 29)
0x10d58c059: 15 const0 (2: 30)
0x10d58c05a: 158 513 m_caggregate (3: 31)
0x10d58c05d: 120 0 push_identifier_lvalue (1: 29)
0x10d58c05f: 41 (void)= (2: 30)
0x10d58c060: 98 save_arg_frame (0: 28) line 23
0x10d58c061: 8 0 identifier (1: 29)
0x10d58c063: 262 41 m_indices (2: 30)
0x10d58c065: 30 0 local (2: 30)
0x10d58c067: 333 18 lambda (3: 31)
0x10d58c069: 8 0 identifier (2: 30)
0x10d58c06b: 15 const0 (3: 31)
0x10d58c06c: 339 24 m_values (4: 32)
0x10d58c06e: 381 apply (3: 31)
test <lambda ?> line 0
0x10a20fc52: 18 9 clit (0: 31) line 0
0x10a20fc54: 8 0 identifier (1: 32)
0x10a20fc56: 162 0 lambda_cconstant (2: 33)
0x10a20fc58: 16 const1 (3: 34)
0x10a20fc59: 142 map_index_lvalue (4: 35)
0x10a20fc5a: 40 = (2: 33)
0x10a20fc5b: 10 1 cstring0 (1: 32)
0x10a20fc5e: 0 0 14 0 0 48 0 0
    2149 ' ParseLine' in ' obj/tools/MGtool.c' ('obj/tools/MGtool#251') line 1548
    2505 ' CallFunc' in ' obj/tools/MGtool.c' ('obj/tools/MGtool#251') line 1616
    3402 ' Xload' in 'obj/tools/MGtool.c (/obj/tools/MGtool/toolcmd.c)' ('obj/tools/MGtool#251') line 1035
    7586 ' CATCH' in ('obj/tools/MGtool#251')
    7616 ' create' in ' test.c' (' test') line 23
    7624 <lambda 0x10a20fc52> in ' test.c' (' test') offset 12
2018.10.22 21:35:25 LDMud aborting on fatal error.
Steps To ReproduceStart the driver and load a file containing the following program:

mapping memory;

void create()
{
  mixed code=({
  #',,
  ({
    #'=,
    ({
      #'[,
      ({
        #'memory
      }),
      #'lambda,
      1
    }),
    9
  })
});

  memory=([ quote("'@"): #'lambda; 0 ]);

  apply(lambda(m_indices(memory), code), m_values(memory));
}

TagsNo tags attached.
External Data (URL)

Activities

Gnomi

2018-10-23 16:28

manager   ~0002464

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

Issue History

Date Modified Username Field Change
2018-10-22 20:02 zesstra New Issue
2018-10-23 16:28 Gnomi Source_changeset_attached => ldmud.git master a91d988e
2018-10-23 16:28 Gnomi Note Added: 0002464
2018-10-23 16:28 Gnomi Assigned To => Gnomi
2018-10-23 16:28 Gnomi Status new => resolved
2018-10-23 16:28 Gnomi Resolution open => fixed