Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

errors of runtime_error,system_error and logic_error

zhang_h_
Beginner
911 Views

Hi,

I had always use Microsoft compiler,  and recently in the use of Intel compiler.

The progran runs well when use Microsoft compiler(MVS2012), but when use the Intel compiler(inter C++ 14.0),there will be some errors

just like:

errors::~runtime_error,

errors::runtime_error,

errors::~system_error,

errors::system_error,

errors::~logic_error,

 errors::logic_error,

the compiler did not give the error line in the program, and the program is so big, how can I find the error in the program?

        Thanks!

0 Kudos
13 Replies
Judith_W_Intel
Employee
911 Views

 

What kind of errors? Compilation errors? Unresolved link errors? Can you show us your command line (icl ...) and the errors you are seeing?

thanks

Judy

0 Kudos
zhang_h_
Beginner
911 Views

Compile without errors, but when run there will be  errors

//=====================compile command lines   ==============================

1>------ Build started: Project: ImageReconstructionCompare (Intel C++ 14.0), Configuration: Release x64 ------ 1>icl : message #10346: optimization reporting will be enabled at link time when performing interprocedural optimizations 1>  ImageReconstruction.cpp 1>D:\zhanghuiwork\ImageReconstructionCompare\ImageReconstructionCompare\ImageReconstructionCompare\Parameters.h(92): warning #80: a storage class may not be specified here 1>     typedef enum mNoiseModel 1>     ^ 1>  ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

//=======================run command lines=====================

Message 1 message #10346: optimization reporting will be enabled at link time when performing interprocedural optimizations D:\...\icl ImageReconstructionCompare (Intel C++ 14.0)

Error 3 error : :~runtime_error D:\...\procedure ImageReconstructionCompare (Intel C++ 14.0)

Error 836 error : :~runtime_error D:\...\procedure ImageReconstructionCompare (Intel C++ 14.0)

Error 837 error : :runtime_error D:\...\procedure ImageReconstructionCompare (Intel C++ 14.0)

Error 838 error : :~system_error D:\...\procedure ImageReconstructionCompare (Intel C++ 14.0)

Error 839 error : :system_error D:\...\procedure ImageReconstructionCompare (Intel C++ 14.0)

Error 840 error : :~logic_error D:\zhanghuiwork\...\procedure ImageReconstructionCompare (Intel C++ 14.0)

Error 861 error : :logic_error D:\zhanghuiwork\...\procedure ImageReconstructionCompare (Intel C++ 14.0)

Message 565 message : loop was not parallelized: existence of parallel dependence D:\zhanghuiwork\ImageReconstructionCompare\...\Rebinning.cpp 21 1 ImageReconstructionCompare (Intel C++ 14.0)

......

0 Kudos
zhang_h_
Beginner
911 Views

Judith Ward (Intel) wrote:

 

What kind of errors? Compilation errors? Unresolved link errors? Can you show us your command line (icl ...) and the errors you are seeing?

thanks

Judy

Here is part of the run time output,I have bolded the error:

1>D:\zhanghuiwork\ImageReconstructionCompare\test\ImageReconstructionCompare\test.cpp(69): message : loop was not vectorized: unsupported loop structure 1>D:\zhanghuiwork\ImageReconstructionCompare\test\ImageReconstructionCompare\test.cpp(69): message : loop was not vectorized: not inner loop 1>D:\zhanghuiwork\ImageReconstructionCompare\test\ImageReconstructionCompare\test.cpp(69): message : loop was not vectorized: not inner loop 1>procedure : error : :~runtime_error 1>procedure : error : :runtime_error 1>     procedure: error_category::~error_category 1>     procedure: error_category::default_error_condition 1>     procedure: error_category::equivalent 1>     procedure: error_category::equivalent 1>procedure : error : :~system_error 1>procedure : error: :system_error 1>     procedure: failure::~failure 1>     procedure: failure::~failure 1>     procedure: failure::failure 1>     procedure: numpunct<char>::~numpunct 1>     procedure: numpunct<char>::_Tidy 1>     procedure: numpunct<char>::do_grouping 1>     procedure: numpunct<char>::do_falsename 1>     procedure: numpunct<char>::do_decimal_point 1>     procedure: numpunct<char>::do_thousands_sep 1>     procedure: numpunct<char>::do_truename 1>     procedure: ctype<char>::~ctype 1>     procedure: _Generic_error_category::~_Generic_error_category 1>     procedure: _Generic_error_category::name 1>     procedure: _Generic_error_category::message 1>     procedure: _Iostream_error_category::~_Iostream_error_category 1>     procedure: _Iostream_error_category::name 1>     procedure: _Iostream_error_category::message 1>     procedure: numpunct<char>::_Getcat 1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xlocnum(128): message : loop was not parallelized: existence of parallel dependence 1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xlocnum(128): message : loop was not parallelized: existence of parallel dependence

......

0 Kudos
jimdempseyatthecove
Honored Contributor III
911 Views

Zhang,

For future pasting in of sample output, insert in front of the output:

Left-Square-Bracket, xxx, Right-Square-Bracket (no commas, I cannot illustrate it here)

Following the inserted text

Left-Square-Bracket, forward slash, xxx Right-Square-Bracket

Where "xxx" is language, such as cpp, for text you can use plain or even use cpp

See "To enable syntax highlighting..." below the Comment edit box. "syntax highlighting" also preserves your line breaks.

I believe what you are seeing are not compilation error messages, rather what you are seeing is the class nesting trace of classes who's name happens to be "error", "runtime_error", ...

Jim Dempsey

0 Kudos
zhang_h_
Beginner
911 Views

jimdempseyatthecove wrote:

Zhang,

For future pasting in of sample output, insert in front of the output:

Left-Square-Bracket, xxx, Right-Square-Bracket (no commas, I cannot illustrate it here)

Following the inserted text

Left-Square-Bracket, forward slash, xxx Right-Square-Bracket

Where "xxx" is language, such as cpp, for text you can use plain or even use cpp

See "To enable syntax highlighting..." below the Comment edit box. "syntax highlighting" also preserves your line breaks.

I believe what you are seeing are not compilation error messages, rather what you are seeing is the class nesting trace of classes who's name happens to be "error", "runtime_error", ...

Jim Dempsey

 

Hi jim,Thank you for reminding me!

I have changed it to a simple"Hellow word" program, still it  will be error when run!

[cpp]

#include <iostream>

 using namespace std;

int main()

{    

  cout<< "Hello World!" <<endl;  

  return(0);

 }

 [/cpp]

 If I comment the "cout" line then the progran will be ok.

Here is the output when run this "hello word" program:

[cpp]

1>------ Build started: Project: ImageReconstructionCompare (Intel C++ 14.0), Configuration: Release x64 ------

1>     procedure: main

1>     procedure: std::operator<<

1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ostream(798): message : loop was not parallelized: existence of parallel dependence 1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ostream(811): message : loop was not parallelized: existence of parallel dependence 1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ostream(798): message : loop was not vectorized: nonstandard loop is not a vectorization candidate 1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ostream(811): message : loop was not vectorized: nonstandard loop is not a vectorization candidate

1>     procedure: std::basic_ostream<char, std::char_traits<char> >::_Sentry_base::~_Sentry_base

1>     procedure: std::basic_ostream<char, std::char_traits<char> >::sentry::~sentry

1>     procedure: basic_string<char, std::char_traits<char>, std::allocator<char> >::_Grow

1>     procedure: _Wrap_alloc<std::_String_base_types<char, std::allocator<char> >::_Alloc>::allocate

1>     procedure: basic_string<char, std::char_traits<char>, std::allocator<char> >::_Tidy

1>     procedure: basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string

1>     procedure: basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string

1>     procedure: ?_Iostream_object@?$_Error_objects@H@std@@$E

1>procedure : error : :~runtime_error

1>     procedure: __sti__?_Iostream_object@?$_Error_objects@H@std@@2V_Iostream_error_category@2@A

1>     procedure: failure::~failure

1>procedure : error : :system_error

1>procedure : error : :runtime_error

1>     procedure: failure::failure 1>     procedure: failure::~failure

1>     procedure: _Iostream_error_category::message

1>     procedure: _Iostream_error_category::name

1>     procedure: _Iostream_error_category::~_Iostream_error_category

1>     procedure: _Generic_error_category::message

1>     procedure: _Generic_error_category::name

1>     procedure: _Generic_error_category::~_Generic_error_category

1>procedure : error : :~system_error

1>     procedure: error_category::equivalent

1>     procedure: error_category::equivalent

1>     procedure: error_category::default_error_condition

1>     procedure: error_category::~error_category

1>procedure : error : :~runtime_error

1>  xilink: executing 'link' ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

[/cpp]

Thanks again!

 

0 Kudos
zhang_h_
Beginner
911 Views

I may found the problem, but I do not know why.

When I use the VC++ compiler, I set the "c/c++  -  command lines  -  additional commands" to "/Qpar /Qpar-report:2 /Qvec-report:2 "

this command will automatically inform you of the optimization results.

If I delete this command Then I can use the inter C++ Compiler.

 

 

Thanks!

0 Kudos
Bernard
Valued Contributor I
911 Views

Yes it looks like list of error handling classes.

0 Kudos
Judith_W_Intel
Employee
911 Views

It is normal for -Qpar-report:2 to print out the procedure names. It is not normal for it to cause a build failure.

I can't reproduce the build failure. Please provide the complete list of compilation options you are using... Does the build failure go away if you remove just the -Qpar-report:2 switch or all three of these switches?

thanks

Judy

This is what I see:

!% cat hello.cpp

#include <iostream>

using namespace std;

int main()
{
  cout<< "Hello World!" <<endl;
  return(0);
}
!% icl /Qpar /Qpar-report:2 /Qvec-report2 hello.cpp
Intel(R) C++ Compiler XE for applications running on IA-32, Version Mainline Bet
a Build x
Built Oct 14 2013 11:49:09 by jward4 on JWARD4-DESK in D:/workspaces/cfe/dev
Copyright (C) 1985-2013 Intel Corporation.  All rights reserved.

hello.cpp
   procedure: main
   procedure: std::operator<<
//sptnap01a.nh.intel.com/wref1/ref/vs2012/VC/include/ostream(798): (col. 4) rema
rk: loop was not parallelized: existence of parallel dependence
//sptnap01a.nh.intel.com/wref1/ref/vs2012/VC/include/ostream(811): (col. 4) rema
rk: loop was not parallelized: existence of parallel dependence
//sptnap01a.nh.intel.com/wref1/ref/vs2012/VC/include/ostream(798): (col. 4) rema
rk: loop was not vectorized: nonstandard loop is not a vectorization candidate
//sptnap01a.nh.intel.com/wref1/ref/vs2012/VC/include/ostream(811): (col. 4) rema
rk: loop was not vectorized: nonstandard loop is not a vectorization candidate
   procedure: flush
   procedure: setstate
   procedure: operator<<
   procedure: std::endl
   procedure: put
   procedure: assign
   procedure: allocate
   procedure: _Getal
   procedure: _Tidy
   procedure: ?_System_object@?$_Error_objects@H@std@@$E
   procedure: __sti__?_System_object@?$_Error_objects@H@std@@2V_System_error_cat
egory@2@A
   procedure: ?_Iostream_object@?$_Error_objects@H@std@@$E
   procedure: __sti__?_Iostream_object@?$_Error_objects@H@std@@2V_Iostream_error
_category@2@A
   procedure: ?_Generic_object@?$_Error_objects@H@std@@$E
   procedure: __sti__?_Generic_object@?$_Error_objects@H@std@@2V_Generic_error_c
ategory@2@A
   procedure: ~failure
   procedure: failure
   procedure: failure
   procedure: default_error_condition
   procedure: message
   procedure: name
   procedure: message
   procedure: name
   procedure: message
   procedure: name
   procedure: system_error
   procedure: equivalent
   procedure: equivalent
   procedure: default_error_condition
   procedure: runtime_error
Microsoft (R) Incremental Linker Version 11.00.50727.1
Copyright (C) Microsoft Corporation.  All rights reserved.

-out:hello.exe
hello.obj
!%

0 Kudos
jimdempseyatthecove
Honored Contributor III
911 Views

Judith,

Why is cout << even considered a candidate for parallelization???

Jim Dempsey

0 Kudos
zhang_h_
Beginner
911 Views

Judith Ward (Intel) wrote:

It is normal for -Qpar-report:2 to print out the procedure names. It is not normal for it to cause a build failure.

I can't reproduce the build failure. Please provide the complete list of compilation options you are using... Does the build failure go away if you remove just the -Qpar-report:2 switch or all three of these switches?

thanks

Judy

The build failure go away if I remove just the -Qpar-report:2 switch !

Here is the  compilation options I am using:

[cpp]

 

 


Configuration Properties:
Platform Toolset:Intel C++ Compiler XE 14.0
IDE: Microsoft Visual Studio 2012
Configuration: Release
Intel Options:
Intel Debugging:
Number of Intel Cilk Plus Threads: [n/a]
Intel Performance Libraries:
 Use IPP: No
 Use MKL: No
 Use TBB: No
 Instrument for use with Intel Threading Analysis Tools: No
C/C++
 Add Processor-Optimized Code Path: None
 Additional Include Directories:
 Additional Options:/Qpar /Qvec-report:2 %(AdditionalOptions)
 Additional Options for MIC Offload Compiler:
 Analyze Files Individually: No
 Analyze Include Files: No
 ASM Lisr Location: $(IntDir)
 Check Dangling Pointers: None
 Check Pointers: None
 Compile As: Default
 Diagnostics File: $(IntDir)$(TargetName).diag
 Disable All Intel Language Extensions: No
 Disable Function Splitting: No
 Disable Precompiled Header Messages: No
 Disable Specific Diagnostics:
 Emit Diagnostics to File: No
 Emit Guided Auto Parallelism Diagnostics to File: No
 Emit Optimization Diagnostics to File: No
 Enable C++0x Support: No
 Enable C99 support: No
 Enable Function-Level Linking: Yes (/Gy)
 Enable Intrinsic Functions:Yes (/Oi)
 Enable Matrix Multiply Library Call: Default
 Enable Use of ANSI Aliasing Rules in Optimizations: No
 Error Limit:
 Favor Size Or Speed: Neither
 Floating Point Expression Evaluation: Default
 Flush Denormal Results To Zero: No
 Force Conformance in For Loop Scope: Yes (/Zc:forScope)
 Guided Auto Parallelism Analysis: Disable
 Guided Auto Parallelism Diagnostics File: $(IntDir)$(TargetName).gap
 Intel Processor-Specific Optimization: None
 Interprocedural Optimization: Multi-File (/Qipo)
 Level of Static Analysis: None
 Loop Unrolling:
 Mode of Static Analysis: None
 Multi-processor Compilation: No
 OpenMP Support: No
 Optimization Diagnostic Level: Disable
 Optimization Diagnostic Phase: All optimizer phases
 Optimization Diagnostic Routine:
 Optimization Diagnostics File: $(IntDir)$(TargetName).rep
 Optimize For Windows Application: No
 Parallelization: No
 Precompiled Header: Not Using Precompiled Headers
 Precompiled Heade File: stdafx.h
 Processor Definitions: WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
 Recognize The Restrict Keyword: No
 Replace Intel Cilk Plus Keywords With Serial Equivalents: No
 Static Analysis Results Directory: My Inspector XE Results - $(ProjectName)
 Treat Enumerations As Known Ranges: No
 Turn off Checking for Undimensioned Arrays: No
 Unmask Floating Point Exceptions: No
 Use Intel Optimized Headers: No
 Vectorizer Diagnostic Level: Default
ALL Options:
/GS /W3 /Gy /Zc:wchar_t /Zi /O2 /Fd"x64\Release\vc110.pdb" /D "WIN32" /D "NDEBUG" /D "_CONSOLE"
/D "_UNICODE" /D "UNICODE" /Qipo /Zc:forScope /Oi /MD /Fa"x64\Release\" /EHsc /nologo /Fo"x64\Release\" /Fp"x64\Release\ImageReconstruction.pch"

Linker:
 Interprocedural Optimization: Yes
 Assembler Output: No Listing
 ASM List Location: [n/a]
 Enable COMDAT Folding: Yes (/OPT:ICF)
 Enable Incremental Linking: No (/INCREMENTAL:NO)
 Enable User Account Control(UAC):Yes (/MANIFESTUAC:)
 Object File Name: [n/a]
 ALL Options:
 /OUT:"D:\zhanghuiwork2\ImageReconstruction\x64\Release\ImageReconstruction.exe" /MANIFEST /NXCOMPAT /PDB:"D:\zhanghuiwork2\ImageReconstruction
\x64\Release\ImageReconstruction.pdb" /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib"
"shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X64 /OPT:REF /INCREMENTAL:NO /SUBSYSTEM:CONSOLE
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"x64\Release\ImageReconstruction.exe.intermediate.manifest" /OPT:ICF /NOLOGO /TLBID:1

[/cpp]

 

0 Kudos
jimdempseyatthecove
Honored Contributor III
911 Views

It appears that when you have auto-parallelization (and no OpenMP nor Cilk++ parallelization), and ask for the auto-parallelizer diagnostic report 2, that then the error occurs. There is no benefit in asking for this report when there is no data for this report, but the request should not present itself as an error.

Jim Dempsey

0 Kudos
JenniferJ
Moderator
911 Views

I duplicated the issue within VS2012 IDE with "release" config with the "/Qpar /Qpar-report:2 /Qvec-report:2" options . It seems a bug in our IDE integration. I'll report it.

Thanks for the reproducible testcase (options).

Jennifer

0 Kudos
JenniferJ
Moderator
911 Views

Additional note to this issue. Although the output says "build failed", but it does generate the output file "main.exe".

Jennifer

0 Kudos
Reply