Ticket #1917 (closed bug: invalid)

Opened 4 years ago

Last modified 3 years ago

Parrot_api_make_interpreter() cause a crash when another interpreter already exists

Reported by: kristaba Owned by: whiteknight
Priority: normal Milestone: 3.0
Component: embed/extend Version: master
Severity: high Keywords: interpreter api
Cc: Language:
Patch status: Platform: all

Description

When a second interpreter is created through the API, the function crash with the following backtrace :

src/thread.c:1397: failed assertion '!interpreter_array'
Backtrace - Obtained 32 stack frames (max trace depth is 32).
/usr/local/lib/libparrot.so(+0xc22f2) [0x2db92f2]
/usr/local/lib/libparrot.so(Parrot_confess+0x9a) [0x2db92ba]
/usr/local/lib/libparrot.so(+0x121a36) [0x2e18a36]
/usr/local/lib/libparrot.so(+0x118b6d) [0x2e0fb6d]
/usr/local/lib/libparrot.so(initialize_interpreter+0x2e7) [0x2dd7927]
/usr/local/lib/libparrot.so(Parrot_api_make_interpreter+0xf6) [0x2db2176]

The only way I find to prevent this is to create a "parent" interpreter and to call Parrot_api_make_interpreter() using this parent to get a new interpreter.

Change History

Changed 4 years ago by whiteknight

  • platform changed from linux to all
  • patch new deleted
  • severity changed from medium to high
  • milestone set to 3.0

Changed 4 years ago by whiteknight

See also #1880.

Changed 3 years ago by dukeleto

  • status changed from new to closed
  • resolution set to invalid

Closing this ticket, as it is a dupe of #1880, which requires a big threading overhaul to change.

Note: See TracTickets for help on using tickets.