Opened 8 years ago
Last modified 8 years ago
#4893 new defect
ligc segfault at fmiInstantiateModel
| Reported by: | Owned by: | Lennart Ochel | |
|---|---|---|---|
| Priority: | high | Milestone: | Future |
| Component: | Code Generation | Version: | v1.13.0-dev-nightly |
| Keywords: | SIGSEGV, libgc, c, fmi1 | Cc: |
Description
Hi,
I'm using fmi version 1 with the C simulation runtime, and for a specific FMU there is a SIGSEGV thrown when instantiating the model.
Here's the GDB stacktrace
(gdb) bt
#0 0xabfc366d in GC_find_limit_with_bound (p=0x81a0604 "", up=0, bound=0x0) at os_dep.c:966
#1 0xabfc373f in GC_find_limit (p=0x81a0604 "", up=0) at os_dep.c:978
#2 0xabfc37c0 in GC_init_linux_data_start () at os_dep.c:463
#3 0xabfc1799 in GC_init () at misc.c:1159
#4 0xabfbb76c in GC_generic_malloc_inner (lb=0, k=2) at malloc.c:125
#5 0xabfbb809 in GC_generic_malloc (lb=0, k=2) at malloc.c:196
#6 0xabfbbb69 in GC_generic_malloc_uncollectable (lb=<value optimized out>, k=2) at malloc.c:319
#7 0xabfbbc05 in GC_malloc_uncollectable (lb=0) at malloc.c:351
#8 0xaf881d19 in initializeDataStruc (data=0x83bf078, threadData=0x83bf410) at simulation/solver/model_help.c:903
#9 0xac4de7ec in GENSAL_fmiInstantiateModel (instanceName=<value optimized out>, GUID=<value optimized out>, functions=..., loggingOn=76 'L')
at include/fmi1/fmu1_model_interface.c:189
(gdb) frame 0
#0 0xabfc366d in GC_find_limit_with_bound (p=0x81a0604 "", up=0, bound=0x0) at os_dep.c:966
966 GC_noop1((word)(*result));
(gdb) print result
$5 = (volatile ptr_t) 0x8047f00 <Address 0x8047f00 out of bounds>
(gdb) frame 8
#8 0xaf881d19 in initializeDataStruc (data=0x83bf078, threadData=0x83bf410) at simulation/solver/model_help.c:903
903 tmpSimData.stringVars = (modelica_string*) omc_alloc_interface.malloc_uncollectable(data->modelData->nVariablesString * sizeof(modelica_string));
(gdb) info locals
tmpSimData = {timeValue = 0, realVars = 0x83bf500, integerVars = 0x83bef30, booleanVars = 0x83b99a0 "", stringVars = 0x0, inlineVars = 0x0}
i = <value optimized out>
(gdb) print data->modelData->nVariablesString
$6 = 0
Link the the function https://github.com/ivmai/bdwgc/blob/master/os_dep.c#L982
This model has only one string parameter, yet data->modelData->nVariablesString is 0.
I cannot test the c++ runtime because i'm using Centos 6.9 32 bits and cannot compile it due to boost errors.
Is this a known problem?
Thanks
Note:
See TracTickets
for help on using tickets.

We don't really test FMI 1 much. Try using the static code target for FMUs though (especially if you use the latest version of the OM master branch); it does not use Boehm GC at all (and I think the default for the dynamic target changed to not use Boehm GC either).