Mystery exit status 1, without comment, building from source

Trying to build a project from a github repo from source. Project known to compile. Dependencies and conflicts already resolved throughout build process, sometimes at length. Didn't need help with that.

Have weird as crap mystery error without anything to go on.

Trying "Verify/Compile" to rule out issues with upload.

It fails. It seems to fail after compilation completes. Indeed, it is after the end of the verbose compilation output where it lists what libraries it used. It generates that, verbose output stops coming, yet it whirs on for a bit yet, then, after that, without comment or further error output:

last line of verbose output:

Using library Adafruit NeoPixel at version 1.12.0 in folder: C:\Users\Admin\OneDrive\Documents\Arduino\libraries\Adafruit_NeoPixel

(here, verbose output stops. but it's doing something. the compile progress bar continues, and it continues working for a bit, so it's up to something, suggesting the log above is unrelated to the issue.)

next line of log, through end of log:

exit status 1

Compilation error: exit status 1
[EOF]

That's it. No error message. No record of invoking some kind of specific command that may exit nonzero. Zilch.

I know whatever it does after compiling and after deciding lib conflicts, that takes a bit, is exiting 1. That's it.

It feels like a linker or post-linker issue. ld usually says something when dieing, though and all I have is a nonzero exit status from an unknown process.

what is happening there that isn't telling me what's happening so I can figure out which thing is broken and then maybe, hopefully, how? what should I expect to maybe have been running?

Any ideas? I'm hoping this matches a specific known issue, but a generic error report is not a report of a uselessly generic error, so I'm having trouble finding this one.

I could use some community lovin'.

Welcome, Aubrey.

Would you be surprised if we asked you to post your code, so we could try the compile process ourselves?

More generically, please read:

1 Like

also if you could post (using code tags) the full verbose out of the console

2 Likes

Can I upload a tarball? Not sure exactly how to do as you ask. Willing.

Here's what I did:

  1. clone from GitHub - justcallmekoko/ESP32Marauder: A suite of WiFi/Bluetooth offensive and defensive tools for the ESP32
  2. follow steps at Installing Firmware From Source · justcallmekoko/ESP32Marauder Wiki · GitHub as best you can, substituting the lib manager for install from zip.
  3. Skip step 11. Do execute step 12. In leiu of step 13, do a "Verify/Compile"
  4. Install the MicroNMEA library, which is required but not mentioned in documentation.
  5. Note that the lib package manager has a package called ESPAsyncWebSrv not ESPAsyncWebServer. It allegedly provides the same interface and functionality, but uses a different header file name. You must therefore change the header to abbreviate to the new package name on line 4 of EvilPortal.h.
  6. step #5 creates a new issue. ESPAsyncWebSrv has an internal component they had the wisdom and foresight to name LinkedList. quite surprisingly, this conflicts with the LinkedList lib used by marauder. namespace it out in the ESPAsyncWebSrv code tree by doing a global search and destroy to add ESPAsyncWebServer::LinkedList in the library folder. Also, in StringArray.h, add "namespace ESPAsyncWebServer" around the bits of that file that do the LinkedList stuff. Basically the whole file, from right under the includes, before the first template class, through the end. This will resolve the conflict, having resolved the library missing error by linking a swap-in replacement.
  7. I'm pretty sure, if I haven't forgotten anything or left anything out, at this point you should get past compile and see the exit status 1 message.

note: the last line you'll see without verbose logging is this:

Multiple libraries were found for "SD.h"
Used: C:\Users\Admin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.11\libraries\SD
Not used: C:\Users\Admin\AppData\Local\Arduino15\libraries\SD

I'm quite sure this is a red herring. This appears to be the linker (maybe?) deciding which library to use, falling back by specificness to board, which is by design. It's letting me know I have an override for the board, but not complaining and dieing. This is confirmed by removing the conflict from the system libs and still getting the error, and by noting verbose output shows many steps after this where it picks more libraries, independently. This is not the problem. Just the last warning from the build.

But, there you go, that'll do it for reproduction steps.

Assuming the silent error is not local or something.

I'm happy to provide links to pending pull requests from which the solutions came, or a tarball of the modified files, or something.

But post your source in a forum is not exactly trivial.

Understood, your problem is more complex than I was expecting. Your description makes that evident, though someone else may twig to something from it. However, per JML, the complete console output might help others with the relevant expertise. Good luck!

1 Like

That's actually early on, it's the IDE trying to guess which library is the right one. As long as you are happy with the choice the IDE made for you then you don't have to worry about those

tried. got error.

An error occurred: Body is limited to 120000 characters; you entered 2137084.

so, the 2MB of output is a bit big for a forum post.

I had thought, for brevity, to pre-parse the log and provide only relevant bits. However, here is the whole log, provided via google drive share, because it's also too big for pastebin:

Yep, good with the choice. I only got there after fixing errors that blocked gcc on something, so I figured it was late in the process.

That's why I'm hoping someone can at least tell me what's happening under the hood at that point.

Thank you very much for your help.

But, I must stress. This isn't a build error from the compiler, I don't think. I don't think the problem is with the source code failing to parse, preprocess, and build into object files.

I've gotten and dispensed with those, and this is something new and different, at a step after those issues come up.

That's all I can say for sure.

(So, please don't let the size of the build, and, therefore, log be offputting. I mostly need to know how to even figure out what's failing that doesn't say anything and that's invocation doesn't get logged.)

Aside from the last three lines, one of them blank, I don't think a single octet of those two megs is actually relevant to this issue.

Maybe I'm missing something obvious, but these errors from the build log will certainly be enough to cause the final 'Compilation error: exit status 1'.

C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/ESPAsyncWebSrv.h:144:5: error: 'StringArray' does not name a type; did you mean 'String'?
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:245:67: error: 'AsyncWebSocketClientESPAsyncWebServer' has not been declared
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:245:106: error: typedef name may not be a nested-name-specifier
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:248:5: error: 'AsyncWebSocketClientESPAsyncWebServer' does not name a type; did you mean 'AsyncWebSocketClient'?
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:334:5: error: 'AsyncWebSocketClientESPAsyncWebServer' does not name a type; did you mean 'AsyncWebSocketClient'?
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/ESPAsyncWebSrv.h:144:5: error: 'StringArray' does not name a type; did you mean 'String'?
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:245:67: error: 'AsyncWebSocketClientESPAsyncWebServer' has not been declared
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:245:106: error: typedef name may not be a nested-name-specifier
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:248:5: error: 'AsyncWebSocketClientESPAsyncWebServer' does not name a type; did you mean 'AsyncWebSocketClient'?
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:334:5: error: 'AsyncWebSocketClientESPAsyncWebServer' does not name a type; did you mean 'AsyncWebSocketClient'?
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/ESPAsyncWebSrv.h:144:5: error: 'StringArray' does not name a type; did you mean 'String'?
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:245:67: error: 'AsyncWebSocketClientESPAsyncWebServer' has not been declared
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:245:106: error: typedef name may not be a nested-name-specifier
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:248:5: error: 'AsyncWebSocketClientESPAsyncWebServer' does not name a type; did you mean 'AsyncWebSocketClient'?
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:334:5: error: 'AsyncWebSocketClientESPAsyncWebServer' does not name a type; did you mean 'AsyncWebSocketClient'?
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/ESPAsyncWebSrv.h:144:5: error: 'StringArray' does not name a type; did you mean 'String'?
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:245:67: error: 'AsyncWebSocketClientESPAsyncWebServer' has not been declared
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:245:106: error: typedef name may not be a nested-name-specifier
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:248:5: error: 'AsyncWebSocketClientESPAsyncWebServer' does not name a type; did you mean 'AsyncWebSocketClient'?
C:\Users\Admin\OneDrive\Documents\Arduino\libraries\ESPAsyncWebSrv\src/AsyncWebSocket.h:334:5: error: 'AsyncWebSocketClientESPAsyncWebServer' does not name a type; did you mean 'AsyncWebSocketClient'?

It could very well be I missing something obvious. Investigating now.

Thank you.

I did not realize that the exit status could be a summary of many linker calls, and one could have failed before others succeeded leaving the end of the log clean, with the error that caused it up above.

It was 3am when I decided the compiler was doing something weird after the last line. It's 1D10T on my end.

Thank you for pointing that out. It took 3 hours to get it to build from that point, but you saved me hours of banging my head on things.

First build. Thanks again.

BUILD SUCCESS!

1 Like

Solution: If you think the error's not there, look up, above the part where the log looks good. It's there, it just may not be the last thing there.

2 Likes

Be sure to give @van_der_decken the solution flag!

2 Likes

You're quite welcome. But you're going to really groan when I tell you that all I did was pop the log into a text editor and search for "error:"...

Now that your question has been answered, please take a moment to mark the topic as solved by clicking the :ballot_box_with_check: Solution button at the bottom of the reply that answered your question, as shown in How to get the best out of this forum.

2 Likes

Yeah, I be dumb. I saw that stuff, and my brain said "that's warnings, because there's non-error output below it" and that was that.

Still, thanks for helping a noob to this assuming far more complicated problems than the ones I was actually having.

3 Likes

yeah trust the compiler when it uses the word 'error'

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.