Help decoding an exception error

Board is NodeMcu Amica
Compiler is Arduino 1.8.5
The sketch was written by somebody else so I am not sure what to do other than to maybe try a new version of the compiler.
I think that EspexceptionDecoder is saying that the subprogram Circum.cpp, line 318 is causing the error so I have included part of it as the whole thing exceeds the 9000 character max here.
This is line 318 in the original sketch.

nsats = (int)GPS->satellites();

I did not include the main sketch. There are a lot of subprograms and I have only listed part of Circum.cpp.

/* call occasionally to sync our system time from GPS, if it is running ok.
void Circum::checkGPS()

 // read more from GPS, process when new message complete
 while (ss->available()) {

    // Serial.print((char)ss->peek());

    if (GPS->encode(ss->read())) {

 // note we receiving GPS sentences ok
 gps_ok = true;

 // get location and age
 float new_lat, new_lng, new_alt;
 unsigned long loc_fix_age;
 GPS->f_get_position(&new_lat, &new_lng, &loc_fix_age);
 new_alt = GPS->f_altitude();

 // get time and age
 unsigned long time_fix_age;
 int new_year; byte new_mon, new_day, new_hr, new_min, new_sec, new_hund;
 GPS->crack_datetime (&new_year, &new_mon, &new_day, &new_hr, &new_min, &new_sec,
 &new_hund, &time_fix_age);

 // determine whether data are up to date
 if (loc_fix_age == TinyGPS::GPS_INVALID_AGE || time_fix_age  == TinyGPS::GPS_INVALID_AGE) {
    gps_lock = false;
    Serial.println("No fix detected");
 } else {
    gps_lock = true;
    if (loc_fix_age > 5000 || time_fix_age > 5000)
 Serial.println("Warning: possible stale data!");

 if (gps_lock) {

    // update system time from GPS unless op has overridden
    if (!time_overridden)
 setnow (new_year, new_mon, new_day, new_hr, new_min, new_sec);

    // update location from GPS, unless op has overridden or within allowed jitter
    if (!loc_overridden 
    && (fabs(latitude - new_lat) > 0.01
 || fabs(longitude - new_lng) > 0.01
 || fabs (altitude - new_alt) > 100)
    ) {

 latitude = new_lat;
 longitude = new_lng;
 altitude = new_alt;

 newObserver (latitude, longitude, altitude);
 magdecl (latitude, longitude, altitude, decimalYear(), &magdeclination);

    // get fix quality info
    hdop = 0.01*GPS->hdop();
  [b]  nsats = (int)GPS->satellites();

And here are the exception decoder results

Exception 28: LoadProhibited: A load referenced a page mapped with an attribute that does not permit loads
PC: 0x40201e64: Circum::checkGPS() at /tmp/arduino_build_245368/sketch/Circum.cpp line 318
EXCVADDR: 0x00000000

Decoding stack results
0x4020bd50: HardwareSerial::write(unsigned char) at /home/hexdump/Arduino-1.8.5/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.h line 161
0x4020c17c: Print::println() at /home/hexdump/Arduino-1.8.5/hardware/esp8266com/esp8266/cores/esp8266/Print.cpp line 184
0x4020c1a0: Print::println(__FlashStringHelper const*) at /home/hexdump/Arduino-1.8.5/hardware/esp8266com/esp8266/cores/esp8266/Print.cpp line 175
0x402015a4: loop() at /home/hexdump/Arduino-1.8.5/Sketches/AutoSatTracker-ESP-new/AutoSatTracker-ESP-new.ino line 80
0x4020d050: loop_wrapper() at /home/hexdump/Arduino-1.8.5/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp line 177