Returned values aren’t valid, did it run Out of Gas? How can fix it?

1) Contract: DappTokenSale ends token sale: Error: Returned values aren’t valid, did it run Out of Gas? at PromiEvent (/usr/lib/node_modules/truffle/build/webpack:/packages/contract/lib/promievent.js:6:1) at TruffleContract.tokenPrice (/usr/lib/node_modules/truffle/build/webpack:/packages/contract/lib/execute.js:109:1) at /home/geet/toke_sale/test/DappTokenSale.js:84:38 at process._tickCallback (internal/process/next_tick.js:68:7)

How can fix in smart contract written in solidity?

TypeError: Invalid type for argument in function call. Invalid implicit conversion from address to address payable requested. selfdestruct(admin); pragma solidity >=0.4.21 <0.6.0; import “./DappToken.sol”; contract DappTokenSale{ address admin; DappToken public tokenContract; uint256 public tokenPrice; uint256 public tokensSold; event Sell(address _buyer, uint256 _amount); constructor(DappToken _tokenContract, uint256 _tokenPrice) public { //Assign an admin admin = msg.sender; //token…

So can I simply send ether to a contract as if it’s a regular wallet, even without payable function?

Are contracts really that different? I guess in theory every contract should have a private key somewhere + it should be possible to send ether to it? Unless geth/parity and other parts of the evm don’t have functions specifically checking if every blockchain transfer is wallet vs contract and hence rejecting ether if it’s send…