Skip to content

Caught exception c0000005 (EXCEPTION_ACCESS_VIOLATION) in OSVVM CoveragePkg #1218

@JimLewis

Description

@JimLewis

Error Message:

nvc --std=19 -H 128m --stderr=error --work=TbCoveragePkg:C:/tools/sim/nvc/VHDL_LIBS/NVC-1.16.2/TBCOV
ERAGEPKG.19 -L C:/tools/sim/nvc/VHDL_LIBS/NVC-1.16.2 -e --jit --no-save TbCov_CovDb_debug -r --ieee-
warnings=off TbCov_CovDb_debug
Error: ** Warning: the --ieee-warnings option may have no effect as the IEEE packages have already b
een initialised, pass --ieee-warnings as a global option instead
Error:
Error: *** Caught exception c0000005 (EXCEPTION_ACCESS_VIOLATION) [address=0000000000000050, ip=0000
7FF6F72AD237] ***
Error:
Error: [00007FF6F70B9B68] _nvc_file_canseek+0x1a98
Error: [00007FFBF264AA12] (KERNELBASE) UnhandledExceptionFilter+0x1f2
Error: [00007FFBF4CE925E] (ntdll) strncpy+0x13ce
Error: [00007FFBF4CA6B52] (ntdll) _C_specific_handler+0x92
Error: [00007FFBF4CE623E] (ntdll) _chkstk+0x9e
Error: [00007FFBF4BF45D6] (ntdll) RtlWow64GetCurrentCpuArea+0xc16
Error: [00007FFBF4CE5B7D] (ntdll) KiUserExceptionDispatcher+0x2d
Error: [00007FF6F72AD236] nvc_set_cover_scope_name+0x216
Error: [00007FF6F71C2F5D] vpi_put_value+0xaa3d
Error: [00007FF6F723BE79] nvc_random_get_next+0x408e9
Error: [00007FF6F723BE79] nvc_random_get_next+0x408e9
Error: [00007FF6F723BE79] nvc_random_get_next+0x408e9
Error: [00007FF6F723BE79] nvc_random_get_next+0x408e9
Error: [00007FF6F70FFA67] std_to_string_real+0x3fee7
Error: [00007FF6F70D893E] std_to_string_real+0x18dbe
Error: [00007FF6F70DC308] std_to_string_real+0x1c788
Error: [00007FF6F70B3F80]
Error: [00007FF6F70B5ACA]
Error: [00007FF6F70AD035]
Error: [00007FF6F5CA3A0D]
Error: [00007FF6F5CA3CC5]
Error: [00007FFBF427E8D6] (KERNEL32) BaseThreadInitThunk+0x16
Error: [00007FFBF4BBC34B] (ntdll) RtlUserThreadStart+0x2b
Error: child killed: segmentation violation
Simulation Finish time 12:12:25, Elapsed time: 0:00:00
% nvc --version
nvc 1.16.2 (1.16.2.r0.gb1d6cab4) (Using LLVM 20.1.5)
Copyright (C) 2011-2025  Nick Gasson
This program comes with ABSOLUTELY NO WARRANTY. This is free software, and
you are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.

Minimal Reproducer. Note the line marked with comment "--Seg Fault if here" - if you comment out that line, it runs fine. Leave it in and it is a seg fault.

library osvvm ;
  context osvvm.OsvvmContext ; 

entity TbCov_CovDb_debug is 
end TbCov_CovDb_debug ;

architecture Test1 of TbCov_CovDb_debug is 
  signal Cov1 : CoverageIDType ;
begin
  TestCovProc : process
  begin
    Cov1 <= NewID("Cov1") ;
    wait for 0 ns ; 

    SetTestName("TbCov_CovDb_debug") ; 

    -- Construct Bins
    SetMessage(Cov1, "AddBins(4, GenBin (0,3) & GenBin(4,59,2) & GenBin (60,63)), 10 Bins. 0 values in bin");
    -- SetMessage(Cov1, "Coverge Model Initialized"); -- OK here 
    AddBins(Cov1, 4, GenBin (0,3) & GenBin(4,59,2) & GenBin (60,63)); 

    SetMessage(Cov1, "Coverge Model Initialized");  -- Seg Fault if here
    WriteBin(Cov1) ; 
    AffirmPassed("Pass the test") ;

    EndOfTestSummary ;
    std.env.stop ;
    wait ;
  end process TestCovProc ;

end Test1 ; 

This code runs in Questa, RivieraPRO, and GHDL - for what ever that is worth. I will single step the code in another to see if I see anything unusual that OSVVM could be doing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions