Giter Site home page Giter Site logo

fc's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fc's Issues

building issue on fc

when i am building fc in Ubuntu 16.04 x86_64 system.
why it is always printing error like following:
src/crypto/_elliptic_impl_priv.hpp:11:7: error: ‘secp256k1_context_t’ does not name a type
const secp256k1_context_t* _get_context();

I am trying to find the declaration of this type secp256k1_context_t in the code but found none.
any one could help ? thx in advance.

Remove thread from ilog

In our logging for appbase we see lines of the form 'parse error: Invalid numeric literal at line 1, column 7'

This is due to the thread name portion of the log file. We are now using boost threads instead of fc threads and some of the assumptions of the format of the thread are incorrect. This can lead to printing of non-ASCII characters. I suggest removing this part of the log message.

Implement backtrace logging

To make it as easy as possible for users to get a backtrace, we want to add functionality to log a backtrace on SIGSEGV.

Build fails with OpenSSL 1.1.0f

steemit/steem#1201

gcc version 6.3.0 20170516 (Debian 6.3.0-18)
-- OPENSSL_FOUND        = TRUE
-- OPENSSL_INCLUDE_DIR     = /usr/include
-- OPENSSL_LIBRARIES = /usr/lib/x86_64-linux-gnu/libssl.a;/usr/lib/x86_64-linux-gnu/libcrypto.a
-- OPENSSL_VERSION = 1.1.0f
[  7%] Building CXX object libraries/fc/CMakeFiles/fc.dir/src/crypto/base58.cpp.o
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:69:24: error: invalid use of incomplete type ‘BIGNUM {aka struct bignum_st}’
 class CBigNum : public BIGNUM
                        ^~~~~~
In file included from /usr/include/openssl/bn.h:32:0,
                 from /home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:30:
/usr/include/openssl/ossl_typ.h:80:16: note: forward declaration of ‘BIGNUM {aka struct bignum_st}’
 typedef struct bignum_st BIGNUM;
                ^~~~~~~~~
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In constructor ‘CBigNum::CBigNum()’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:74:21: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
                     ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In copy constructor ‘CBigNum::CBigNum(const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:79:21: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
                     ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:80:30: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘BIGNUM* BN_copy(BIGNUM*, const BIGNUM*)’
         if (!BN_copy(this, &b))
                              ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:82:31: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘void BN_clear_free(BIGNUM*)’
             BN_clear_free(this);
                               ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘CBigNum& CBigNum::operator=(const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:89:30: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘BIGNUM* BN_copy(BIGNUM*, const BIGNUM*)’
         if (!BN_copy(this, &b))
                              ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In destructor ‘CBigNum::~CBigNum()’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:96:27: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘void BN_clear_free(BIGNUM*)’
         BN_clear_free(this);
                           ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In constructor ‘CBigNum::CBigNum(signed char)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:100:47: error: ‘BN_init’ was not declared in this scope
     CBigNum(signed char n)      { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
                                               ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In constructor ‘CBigNum::CBigNum(short int)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:101:47: error: ‘BN_init’ was not declared in this scope
     CBigNum(short n)            { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
                                               ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In constructor ‘CBigNum::CBigNum(int)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:102:47: error: ‘BN_init’ was not declared in this scope
     CBigNum(int n)              { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
                                               ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In constructor ‘CBigNum::CBigNum(int64_t)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:104:47: error: ‘BN_init’ was not declared in this scope
     CBigNum(int64_t n)          { BN_init(this); setint64(n); }
                                               ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In constructor ‘CBigNum::CBigNum(unsigned char)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:105:47: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned char n)    { BN_init(this); setulong(n); }
                                               ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In constructor ‘CBigNum::CBigNum(short unsigned int)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:106:47: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned short n)   { BN_init(this); setulong(n); }
                                               ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In constructor ‘CBigNum::CBigNum(unsigned int)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:107:47: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned int n)     { BN_init(this); setulong(n); }
                                               ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In constructor ‘CBigNum::CBigNum(uint64_t)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:109:49: error: ‘BN_init’ was not declared in this scope
     CBigNum(uint64_t n)           { BN_init(this); setuint64(n); }
                                                 ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In constructor ‘CBigNum::CBigNum(const std::vector<unsigned char>&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:113:21: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
                     ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘void CBigNum::setulong(long unsigned int)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:119:33: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_set_word(BIGNUM*, long unsigned int)’
         if (!BN_set_word(this, n))
                                 ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘long unsigned int CBigNum::getulong() const’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:125:32: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘long unsigned int BN_get_word(const BIGNUM*)’
         return BN_get_word(this);
                                ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘unsigned int CBigNum::getuint() const’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:130:32: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘long unsigned int BN_get_word(const BIGNUM*)’
         return BN_get_word(this);
                                ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘int CBigNum::getint() const’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:135:43: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘long unsigned int BN_get_word(const BIGNUM*)’
         unsigned long n = BN_get_word(this);
                                           ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:136:33: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_is_negative(const BIGNUM*)’
         if (!BN_is_negative(this))
                                 ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘void CBigNum::setint64(int64_t)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:174:37: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘3’ to ‘BIGNUM* BN_mpi2bn(const unsigned char*, int, BIGNUM*)’
         BN_mpi2bn(pch, p - pch, this);
                                     ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘void CBigNum::setuint64(uint64_t)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:201:37: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘3’ to ‘BIGNUM* BN_mpi2bn(const unsigned char*, int, BIGNUM*)’
         BN_mpi2bn(pch, p - pch, this);
                                     ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘void CBigNum::setvch(const std::vector<unsigned char>&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:217:46: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘3’ to ‘BIGNUM* BN_mpi2bn(const unsigned char*, int, BIGNUM*)’
         BN_mpi2bn(&vch2[0], vch2.size(), this);
                                              ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘std::vector<unsigned char> CBigNum::getvch() const’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:222:50: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_bn2mpi(const BIGNUM*, unsigned char*)’
         unsigned int nSize = BN_bn2mpi(this, NULL);
                                                  ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:226:32: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_bn2mpi(const BIGNUM*, unsigned char*)’
         BN_bn2mpi(this, &vch[0]);
                                ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘CBigNum& CBigNum::SetCompact(unsigned int)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:240:44: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘3’ to ‘BIGNUM* BN_mpi2bn(const unsigned char*, int, BIGNUM*)’
         BN_mpi2bn(&vch[0], vch.size(), this);
                                            ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘unsigned int CBigNum::GetCompact() const’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:246:50: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_bn2mpi(const BIGNUM*, unsigned char*)’
         unsigned int nSize = BN_bn2mpi(this, NULL);
                                                  ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:249:32: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_bn2mpi(const BIGNUM*, unsigned char*)’
         BN_bn2mpi(this, &vch[0]);
                                ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘std::__cxx11::string CBigNum::ToString(int) const’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:294:35: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘void BN_set_negative(BIGNUM*, int)’
         BN_set_negative(&bn, false);
                                   ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:297:29: error: cannot convert ‘CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
         if (BN_cmp(&bn, &bn0) == 0)
                             ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:299:32: error: cannot convert ‘CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
         while (BN_cmp(&bn, &bn0) > 0)
                                ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:301:54: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_div(BIGNUM*, BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
             if (!BN_div(&dv, &rem, &bn, &bnBase, pctx))
                                                      ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:307:32: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_is_negative(const BIGNUM*)’
         if (BN_is_negative(this))
                                ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘bool CBigNum::operator!() const’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:322:31: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_is_zero(const BIGNUM*)’
         return BN_is_zero(this);
                               ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘CBigNum& CBigNum::operator+=(const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:327:35: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_add(BIGNUM*, const BIGNUM*, const BIGNUM*)’
         if (!BN_add(this, this, &b))
                                   ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘CBigNum& CBigNum::operator*=(const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:341:41: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_mul(BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
         if (!BN_mul(this, this, &b, pctx))
                                         ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘CBigNum& CBigNum::operator<<=(unsigned int)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:360:41: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_lshift(BIGNUM*, const BIGNUM*, int)’
         if (!BN_lshift(this, this, shift))
                                         ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘CBigNum& CBigNum::operator>>=(unsigned int)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:371:28: error: cannot convert ‘CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
         if (BN_cmp(&a, this) > 0)
                            ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:377:41: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_rshift(BIGNUM*, const BIGNUM*, int)’
         if (!BN_rshift(this, this, shift))
                                         ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘CBigNum& CBigNum::operator++()’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:386:47: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_add(BIGNUM*, const BIGNUM*, const BIGNUM*)’
         if (!BN_add(this, this, BN_value_one()))
                                               ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In member function ‘CBigNum& CBigNum::operator--()’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:403:45: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_sub(BIGNUM*, const BIGNUM*, const BIGNUM*)’
         if (!BN_sub(&r, this, BN_value_one()))
                                             ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘const CBigNum operator+(const CBigNum&, const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:428:27: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_add(BIGNUM*, const BIGNUM*, const BIGNUM*)’
     if (!BN_add(&r, &a, &b))
                           ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘const CBigNum operator-(const CBigNum&, const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:436:27: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_sub(BIGNUM*, const BIGNUM*, const BIGNUM*)’
     if (!BN_sub(&r, &a, &b))
                           ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘const CBigNum operator-(const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:444:43: error: cannot convert ‘CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_is_negative(const BIGNUM*)’
     BN_set_negative(&r, !BN_is_negative(&r));
                                           ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘const CBigNum operator*(const CBigNum&, const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:452:33: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_mul(BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
     if (!BN_mul(&r, &a, &b, pctx))
                                 ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘const CBigNum operator/(const CBigNum&, const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:461:39: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_div(BIGNUM*, BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
     if (!BN_div(&r, NULL, &a, &b, pctx))
                                       ^
In file included from /home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:30:0:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘const CBigNum operator%(const CBigNum&, const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:470:10: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘2’ to ‘int BN_div(BIGNUM*, BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
     if (!BN_mod(&r, &a, &b, pctx))
          ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘const CBigNum operator<<(const CBigNum&, unsigned int)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:478:33: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_lshift(BIGNUM*, const BIGNUM*, int)’
     if (!BN_lshift(&r, &a, shift))
                                 ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘bool operator==(const CBigNum&, const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:490:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
 inline bool operator==(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) == 0); }
                                                                                   ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘bool operator!=(const CBigNum&, const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:491:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
 inline bool operator!=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) != 0); }
                                                                                   ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘bool operator<=(const CBigNum&, const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:492:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
 inline bool operator<=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) <= 0); }
                                                                                   ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘bool operator>=(const CBigNum&, const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:493:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
 inline bool operator>=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) >= 0); }
                                                                                   ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘bool operator<(const CBigNum&, const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:494:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
 inline bool operator<(const CBigNum& a, const CBigNum& b)  { return (BN_cmp(&a, &b) < 0); }
                                                                                   ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘bool operator>(const CBigNum&, const CBigNum&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:495:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
 inline bool operator>(const CBigNum& a, const CBigNum& b)  { return (BN_cmp(&a, &b) > 0); }
                                                                                   ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘std::__cxx11::string EncodeBase58(const unsigned char*, const unsigned char*)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:525:48: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_div(BIGNUM*, BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
         if (!BN_div(&dv, &rem, &bn, &bn58, pctx))
                                                ^
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp: In function ‘bool DecodeBase58(const char*, std::vector<unsigned char>&)’:
/home/jnordberg/steem/libraries/fc/src/crypto/base58.cpp:575:42: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_mul(BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
         if (!BN_mul(&bn, &bn, &bn58, pctx))
                                          ^
libraries/fc/CMakeFiles/fc.dir/build.make:1310: recipe for target 'libraries/fc/CMakeFiles/fc.dir/src/crypto/base58.cpp.o' failed
make[3]: *** [libraries/fc/CMakeFiles/fc.dir/src/crypto/base58.cpp.o] Error 1
CMakeFiles/Makefile2:199: recipe for target 'libraries/fc/CMakeFiles/fc.dir/all' failed
make[2]: *** [libraries/fc/CMakeFiles/fc.dir/all] Error 2
CMakeFiles/Makefile2:2704: recipe for target 'programs/steemd/CMakeFiles/steemd.dir/rule' failed
make[1]: *** [programs/steemd/CMakeFiles/steemd.dir/rule] Error 2
Makefile:734: recipe for target 'steemd' failed
make: *** [steemd] Error 2

Improve initialization of struct for stack trace

@vogel76 suggests the following:

I think initialization shall be done as follows:

   struct sigaction sigact = {0};
   sigset_t block_mask = {0};
   sigemptyset (&block_mask);
   
   sigact.sa_sigaction = segfault_handler;
   sigact.sa_flags = SA_RESTART | SA_SIGINFO;
   sigact.sa_mask = block_mask;

Valgrind complains about sa_mask field, and I think it is dangerous to leave trash there. Also I am not sure if inside this handler SIGINT shall be blocked to avoid spawning standard break handler during execution of SIGSEGV

Log long executing API calls

This is for steemit/steem#829

FC should time API call execution times and display an error when execution time exceeds 1 second and a warning when it exceeds 750 ms. This is to both increase responsiveness of the API but also to ensure that an API call always reads consistent data from the database.

JSON RPC Improvements Pt. 1

With some minor tweaks, we can improve our json rpc responses significantly.

Returning the jsonrpc field is an easy win and increases compatibility with other libraries steemit/steem#66

Additionally, a minor tweak to exception::to_string increases readability of errors significantly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.