Qamada_Case_K
@Qamada_Case_K (Case K Qamada)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

g++でビルド中にSegmentation fault

Q&A

Closed

解決したいこと

コンパイルを通したい。

例)
gSOAPでONVIFカメラのコードを書いてます。
gSOAPが生成したソースコードをラズパイ zero w上でコンパイル中にSegmentation Faultが発生しました。
解決方法を教えて下さい。もしくは、「そら大変やな」とコメントください。

発生している問題・エラー

g++ -I./ -I ~/gsoap-2.8/gsoap  -I ~/gsoap-2.8/gsoap/plugin -DSOAP_H_FILE=wsddH.h -DWITH_OPENSSL -DWITH_DOM -DWITH_ZLIB -DDEBUG -c -o soapC.o soapC.cpp
soapC.cpp: In function ‘void* soap_instantiate(soap*, int, const char*, const char*, size_t*) ’:
soapC.cpp:18704:94: internal compiler error: Segmentation fault
  return (void*)soap_instantiate___trt__GetMetadataConfiguration(soap, -1, type, arrayType, n);
                                                                                             ^

0xb6aa410f ???
        ../sysdeps/unix/sysv/linux/arm/sigrestorer.S:64
0xb6a8e717 __libc_start_main
        /home/pi/dev/glibc-buster/csu/libc-start.c:308
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-8/README.Bugs> for instructions.
make: *** [Makefile:23: soapC.o] Error 1

soapC.cpp の生成手順

環境

  • linux環境で生成
  • gSOAP ver.2.8.117
  • g++ (Raspbian 8.3.0-6+rpi1) 8.3.0

wsdl2h実行し、onvif.hを生成

$ wsdl2h -O3 -P -x -o onvif.h http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl https://www.onvif.org/ver10/events/wsdl/event.wsdl http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl

onvif.hをテキストエディタで修正

#import "wsdd5.h"   // wsdd5 = <http://schemas.xmlsoap.org/ws/2005/04/discovery>
#import "xop.h" // xop = <http://www.w3.org/2004/08/xop/include>
#import "wsa5.h"    // wsa5 = <http://www.w3.org/2005/08/addressing>

↓以下の様に修正↓

#import "wsdd10.h"
#import "xop.h" // xop = <http://www.w3.org/2004/08/xop/include>
#import "wsa5.h"    // wsa5 = <http://www.w3.org/2005/08/addressing>
#import "wsse.h"

gsoap-2.8/gsoap/import/wsa5.hをテキストエディタで修正

int SOAP_ENV_Fault →int SOAP_ENV_Fault_alex

以下のコマンドで soapC.cpp 生成

$ soapcpp2 -j -c++ -2 -S -s -a -x -L -I ~/gsoap-2.8/gsoap/import -I ~/gsoap-2.8/gsoap -x onvif.h

自分でヤってみたこと

  • swapファイルサイズが4GBだったので2GBにしてリトライ中
0

1Answer

ビルドエラーが出たファイルを
WSL2/ubuntu のクロスコンパイル環境でコンパイルし、エラーなしでコンパイルできたので
本件クローズします。

0Like

Your answer might help someone💌