Are you using QtQuick Controls 1 or QtQuick Controls 2?

If QtQuick Control 2, do the following:

stackView.push("qrc:/Profile.qml", {user_info: user_data})

For Controls 1:

stackView.push({item: "qrc:/Profile.qml", properties: {user_info: user_data}})

I think you may be using Controls 2, and the original command you used was for Controls 1. Your solution worked because it is a correct way to use the push function for Controls 2 (although having it as a list isn't necessary since you're only pushing one item)

See the difference between the push function for Controls 1 and Controls 2 in the documentation:
http://doc.qt.io/qt-5/qml-qtquick-controls-stackview.html#push-method (Controls 1)
http://doc.qt.io/qt-5/qml-qtquick-controls2-stackview.html#push-method (Controls 2)