AAC stream in MP4 file has wrong duration. How to fix?
How do you know file is 2:09:42 long?

From ffmpeg documention:


  Get duration by decoding
  You can also use ffmpeg to get the duration by fully decoding the file. The null muxer is used so no output file is created. Refer to time= in the last line of the console output. In this example the input has a duration of 00:57:28.87. 


$ ffmpeg -i input.webm -f null -
...
frame=206723 fps=1390 q=-0.0 Lsize=N/A time=00:57:28.87 bitrate=N/A speed=23.2x



  
  This method will report the correct duration in case the methods using ffprobe are incorrect or missing due to corrupt, truncated, or damaged files. 
  The command may take some time depending on the input file duration and decoding complexity. 
  


So it seems that your file timings are "incorrect or missing due to corrupt, truncated, or damaged files."
Hence your ffprobe report contains wrong duration.
Your remux "did not change anything" because you did not encode the file: -codec copy

2nd line of your report shows: "Duration: N/A, bitrate: N/A" which is another indication of damaged file.
Further in the report, you'll notice "Estimating duration from bitrate, this may be inaccurate"

Try this:

ffmpeg -i input.mp4 -c:v libx264 x.mp4


With a very good computer, this should be done in about 2 hrs. 
Enjoy.