Q:

Solidity/Remix Error : The constructor should be payable if you send value?

Simple contract, but don't transfer ETH!
pragma solidity ^0.4.24;

contract Upper {
    uint public count;

    constructor() payable public {}

    function() payable public {
        count++;
    }
}

contract Caller {
    function run(address addr) payable public {
        addr.transfer(msg.value);
    }
}

I call run-function in Caller contract. Then run call fallback function return error Solidity/Remix Error : The constructor should be payable if you send value
But if I call fallback-runction in Upper contract - tx - success!

A:

You're running out of gas. The transfer function only supplies 2300 gas to the address it calls. The fallback function of Upper writes to storage, which consumes more than 2300 gas.
You could use require(addr.call.value(msg.value)()); instead, but it's generally better to move gas-consuming operations out of the fallback function altogether.

