Sign in to follow this  

Email flow for sending minidumps

Recommended Posts

Let's start with a short story:

- I wanted to send crash dump information to an email (gmail), so I looked around my existing solutions

- Since I was using raknet, I tried RakNet::EmailSender. Didnt work

- I went through the pain of building and trying libcurl. Didnt get it to work, got vague error messages. Realized I had to download openssl to continue on.

- Then I discovered that doing this was far easier in a seperate c# executable. Goddamnit.

 

So, I'm wondering, what do devs use to send their minidumps/report/metrics data? Is this all done within the game or as a separate app?

And how do they hide the email addresses and passwords within their emailing software?

Share this post


Link to post
Share on other sites

Metrics are usually easy enough to do within the engine itself, and you're often sending data bit by bit so you don't want a standard uploader tool anyway.

 

Crashlogs and the like are a bit trickier, but a separate executable is the best approach (especially since a crash implies that your main process is invalid in some way).

 

The most important bit is that they wouldn't usually use email; they'd have a connection to a server somewhere (probably a web server) which receives simple API calls of some sort. Generally speaking nobody is going to want to distribute an executable that has email-sending privileges.

Share this post


Link to post
Share on other sites

Metrics are usually easy enough to do within the engine itself, and you're often sending data bit by bit so you don't want a standard uploader tool anyway.

 

Crashlogs and the like are a bit trickier, but a separate executable is the best approach (especially since a crash implies that your main process is invalid in some way).

 

The most important bit is that they wouldn't usually use email; they'd have a connection to a server somewhere (probably a web server) which receives simple API calls of some sort. Generally speaking nobody is going to want to distribute an executable that has email-sending privileges.

 

Thanks for the tips!

What if you don't want to pay for a web server just for receiving crashdumps? In my case, besides crashdumps, I also intend to have desynced replays sent as well.

Share this post


Link to post
Share on other sites
Posted (edited)
What if you don't want to pay for a web server just for receiving crashdumps? In my case, besides crashdumps, I also intend to have desynced replays sent as well.

 

Then figure out how to pay for one. After all those mini dumps needs to be stored somewhere in transit, and most email hosts won't want you sending files that big around. Email's also not a particularly reliable or accessible or secure method of doing so anyhow. 

 

You can get away with only one server endpoint to send these things, and the cost of that sort of thing isn't really much at all. 

Edited by Josh Petrie

Share this post


Link to post
Share on other sites

Write a browser extension that goes to the gmail account, downloads the file, then deletes the email.

 

Send the email dump in a seperate process on the machine that has an issue.

 

This way the email doesn't fill up and you won't need a web server.

Share this post


Link to post
Share on other sites

What if you don't want to pay for a web server just for receiving crashdumps? In my case, besides crashdumps, I also intend to have desynced replays sent as well.


A very basic webserver that hosts PHP files and allows you to accept uploads or log events to a database could cost you as little as $20 a year. Maybe less.

 

Doing it via email means the sender needs access to an email account, which means they have sending credentials, which means it'll get shut down as soon as a single malicious person intercepts the credentials and uses them for spam or other fooling around. On top of the other problems with using email for this, mentioned above by Josh.

 

If you're on mobile platforms there are hip and happening new services like Bugsense or Crashlytics available, but desktop apps aren't cool enough for all that any more.

Share this post


Link to post
Share on other sites
Also be careful with this sort of thing in general. There are Rumours™ of malformed minidump files that can be used for security exploits, for example. Accepting arbitrary binary data from unknown foreign hosts (i.e. your players) is generally unwise.

I'd go so far as to say this is gonna get you owned unless you are thorough with safety precautions and disciplined in examining your data dumps in a locked-down VM or whatever.

Share this post


Link to post
Share on other sites

What if you don't want to pay for a web server just for receiving crashdumps? In my case, besides crashdumps, I also intend to have desynced replays sent as well.

 

Doesn't have to be a webserver.

You could create an S3 bucket in AWS (or one of their other storage offerings). For 12 months you get 5GB of S3 bucket storage for free. Or you get 25GB of NoSQL DynamoDB storage free forever!

 

Google App Engine has a fairly amenable free tier too.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this