Application on another system crashes on startup without error message for sudo, Segmentation Fault for non-sudo

StackOverflow https://stackoverflow.com/questions/23143104

Question

I have written a websocket++ server on Ubuntu 13.10 and am trying to execute it on Linux Mint 16.

I have installed all dependencies, and the first line under main is a cout which never fires.

This is the compile command:

g++ -o Dgn Dgn.cpp ed25519-donna-master/ed25519.o 
  -Og -std=c++0x -I ~/Dgn -D_WEBSOCKETPP_CPP11_STL_ -D_WEBSOCKETPP_NO_CPP11_REGEX_ 
  -lboost_regex -lboost_system -L/usr/lib -lssl -lcrypto -pthread -lpqxx 
  -lboost_thread -ljson_spirit -lgmp -lgmpxx

If I execute with sudo to use restricted ports, it fails immediately without error returning to the command line.

If I execute without sudo, is prints Segmentation Fault and fails immediately to the command line.

The directories in ~/Dgn are present on the new system.

I did a quick, simple test and checked to see if a basic websocket++ example could compile and execute normally, and it was successful.

Both systems are 64-bit. The only difference are the distros, but Linux Mint 16 is based upon Ubuntu 13.10, and all commands to setup were identical.

How can this be compiled so that it can execute on another system?


As a further test, I compiled it on the new system, and it works.

Is it not possible to compile on one system and run on another?

GDB

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7de58da in ?? () from /lib64/ld-linux-x86-64.so.2
Was it helpful?

Solution

The fact that cout line never fires (I assume it has << std::endl) means that the crash happens in a static object constructor. The most straightforward way to debug is to allow core dump (see man limits) and inspect the dump with gdb. So far that's all I can think of. More details will help.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top