Fit of TGraphErrors fails, Fit of TGraph without Errors works

Two small fixes …

tf_noerr->SetParameter(0, 2.5);
// ...
tf_err->SetParameter(0, 2.5);

The real problem is that ROOT has often problems when fitting anything with “x errors” (and nobody cares, as usual).
So, avoid setting “x errors”, if you can.
If you cannot, I have found a “brutal fix” which often works, and in your case it would be …

gr_err->Fit(tf_err, "WQRN"); // "initial pre-fit"
gr_err->Fit(tf_err, "RM+"); // "final fit"