When VLC Doesn’t Update Anymore

Most of us probably ran into a bug in some application at one point. Sometimes it’s not very obvious, e.g. a random crash, while other times you may know that, if you for example perform certain five steps it will crash. But what do you do when you find an issue? Do you just avoid the crashing steps? Do you restart the app and keep working? Or do you put in some time and try and report the issue to the developer?

As a developer myself, detailed bug reports and active involvement in the bug report have been among the most valuable things in fixing bugs. As such, I can only highly recommend to send in bug reports whenever possible! Here is just some bug hunting story from last weeks.

Last week I opened the great video player VLC to playback some Opus audio file. Shortly after opening the application, it reported that there was a software update. I vaguely remembered that it already previously mentioned that, so I was a bit confused why I didn’t update then. Of course I accepted to download the new version and after 22% through the download process, VLC simply crashed. Aha! That’s why I didn’t update VLC last time. And indeed whenever you try to update VLC it would simply crash.

VLC Crash

I remembered back when ShareX didn’t update when you clicked on the auto-update message and also remembered that they put up a notice on their website to manually update it. Certainly a broken update function in a quite popular media player would have been reported by now and thus I checked the website. To my surprise however there was no notice and searching a bit further I couldn’t find a report either. So I took things to the VideoLAN IRC channel and quickly found some active user.

After some digging we found the debug nightly builds. With that in hand, I thought it would be very easy to get a stack trace of the crash, but because this was a nightly build, the update feature points to a test server and while it actually triggered an update to be run, the build to update to wasn’t available anymore and thus nothing happened.

My next idea was to simply spoof the update server and change the update information. Having Python installed on my system I could just run python -m http.server 80 and it would launch a web server that served the files in the working directory. Then I added the update server to my hosts file, placed the update text file in the web server’s directory and … VLC’s update feature now simply threw an error. Luckily the debug build also output a lot of useful information in the console, so I saw that the update tests a signature file. This security feature prevents exactly this kind of “attack” where the DNS is spoofed and the fake server serves a malicious update. Having a file with a PGP signature ensures that only the ones with the private key can provide binaries with matching signatures.

So the new plan was to simply take the update file for the latest release version and its signature file. Finally, VLC crashed and I could get the stack trace. With an impressive list of 1637 entries, it became clear that the crash must be some sort of infinite recursion, which fills up the stack and finally leads to the crash. Since the problem seems to occur around lots of Qt functions, it may end up being less of an VLC issue and more one of Qt. A report was filed and now the waiting game beings.

Critique

In my books having a broken update function seems quite critical, as your users won’t get any security updates anymore, but need to go to the website and manually update VLC and many will probably just disable auto-update to not receive that message anymore. As such the reaction so far have been too low for my liking and I’m surprised that nobody else has experienced this issue. Then again VLC is an open source software maintained by developers in their free time, so it’s not a surprise that things take a bit longer.

The fact that the update feature doesn’t work due to outdated files in the nightly/development builds is a bit concerning. If it can’t be tested easily, then it simply won’t be tested at all and bugs like the one mentioned won’t be found during development.

VLC’s automatic reporting system doesn’t work (anymore). The FTP server the reports gets send to, doesn’t seem to exist anymore. In the consumer market direct reports to the team like mine are quite rare, so an automatic crash report system should work, so you actually see in case VLC suddenly keeps crashing all around the world.

Summary

As a software user, report bugs whenever you can and include as much information as possible!

As a software developer, make sure your features can be tested and that debug builds/symbols are available to get more detailed information.

I wanted to write some more on how to report bugs, but this post has already turned into a longer one, so I’ll reserve that for a dedicated entry.

SFML Games – February (2016)

Maybe this will actually turn into a monthly thing again, who knows?!

New Games

As last month this section contains only games for which binary files have been provided, so I could actually try them out.

Cendric: An RGP Platformer

Cendric

I have run into this one quite a while back and was especially excited, because it’s being developed by some fellow Swiss people. As the title says the game is a mix of an RPG and a platformer. The only playable version currently consists of one map where you can walk around and talk to one NPC and one platformer level. If I understood the game play correctly you could realm around the world and whenever you entered a cave or other places, you’d essentially switch into “platformer mode”. You can upgrade your character with various gear that you either find or buy from NPCs. Since that playable version they have done quite a lot of changes, so things might look a lot different now.

The project is open source, they have their own website and have made a forum post.

Tennis Pong

Tennis Pong

Some people may have enough of Pong clones, but I’ve to say despite it being a Pong game, the art makes it a lot more attractive. The sound effects are spot on (they are apparently from Mario Tennis of Wii U), the music in the menu is great and little details such as the ball’s shadow changing depending on the “height” makes it just an overall great game. Additionally the AI can be beaten, which makes more enjoyable than just being always defeated.

You can find more information in the forum post. If you want to find out more about the author you can check out his website.

YAPG – Yet Another Platformer Game

YAPG

While there’s not much game play to see as of right now, the more interesting part is that the whole game is built to be very modifiable. One can create their own blocks, levels etc. and the level editor will be directly included. I hope that we’ll get to see some more in-game content soon!

Until then you can check out the source code on GitHub and read more information about it on the forum. And don’t forget to check out the author’s website!

SnakeFML

SnakeFML

As the title kind of hints at this is a snake game, but with the head being the SFML logo, but with eyes. The color of the body gets picked randomly when the game starts. Unsurprisingly the goal is to catch as many mice as possible while not colliding with yourself or that water. As most other snake games it’s quite enjoyable to just quickly jump into and play a bit. I hope we’ll see some more changes in the near future.

The game is also open source and for some more discussion check out the forum thread.

Game Showcases

Some games don’t have playable versions yet, but feature some interesting videos or screenshots.

Heart

Heart

The game reminds me quite a bit of circular Pong/Breakout, the goal seems to be to move the circle around so the emitted ball will hit the near matching color on the outer ring. The concept was highly inspired by this video. Check it out on the forum.

Blind Jump

Blind Jump describes itself as Space Themed Adventure Game with Roguelike Elements. The levels are procedurally generated, the goal is to follow certain way points and should increase in difficulty over time. I like the shown designs so far quite a bit, so it will be interesting to see the final product. Check it out on the forum.

Muffin World

Muffin World is a simple platformers that is not locked into a grid and comes with moving platforms. It’s still in development but the built-in level editor looks already quite promising, Check it out on the forum.

Pointless War

Pointless Wars

Last but not least is a game that was already featured last month, but didn’t have a name back then. It’s a turn-based strategy game that builds a lot around how you setup your formations. I really like the art style and the idea behind it sounds quite intriguing. Check it out on the forum.

Honorable Mentions

No honorable mentions this month, but they’ll be back in the future!

SFML Games – January (2016)

Due to exams I had been quite busy during January and February and only now came back to look at all the newly created SFML games. However since I don’t really feel like summarizing discussions or important things going on in the community, I didn’t want to make this another SFML News post and thus named it SFML Games.

New Games

In this section I’ll only feature games for which binary files have been provided, so I could actually try them out.

Slimey Carnage

Slimey Carnage

I love platformers, so this fits directly into my category. While it’s marked as alpha release the visuals are quite polished, the game menu is very well done – especially the settings screen – and the music and sound effects fit very nice. The only downside is, that after a few level the game gets nearly impossible (for me). My guess is that the game was created while using a controller and has not really been tested with a keyboard, or the developer is just a huge platform player. If the controls get adjusted this could easily turn out to be my favorite game of the month. Check it out on the forum.

SF-SpaceG

SF-SpaceG

Next up is SF-SpaceG a small game that reminds me of Asteroids, but goal here is to fly around and get all the checkpoints while avoiding the asteroids. It is kind of strange that the deceleration is a lot slower than the acceleration, plus when you destroy an asteroid it doesn’t go away, but only stops moving and turns red. Additionally it can be quite tricky to figure out whether you’re moving or now since all the asteroids around you are movie as well. The game can be quite fun, but it needs quite a bit of work to get there, especially with the visual feedback. Check it out on the forum.

Fury3D

Fury3D

Not exactly a game, but I guess it’s a start to some game. Fury3D is a simple 3D rendering engine written in C++11 and modern OpenGL. It uses quite a few various libraries, but the demo runs and looks quite nice. Check it out on the forum.

 

Game Showcases

Some games are not yet playable but have some interesting screenshots or videos which I’ll provide here.

Our Dear Paper Fighters

Unfortunately at the time of writing this the link for the download was unavailable so I didn’t get to try it out. The video looks very nice and little narrative popups are quite funny. It feels a bit bullet-hellish which I usually don’t like, but it think this could be quite enjoyable after all. Looking forward to being able to play it. Check it out on the forum.

Unnamed turn based strategy game

Unnamed turned based strategy game

The goal here is to fight win two consecutive battles in a row against another army. From the provided screenshots it seems like quite a bit of the mechanic is already implemented. Check it out on the forum and if you want to see more screenshots and vote for a name, check out this thread.

The Dare

There isn’t a whole lot of information on the project, but it should end up as a top-down horror game set in a psychiatric ward where other patients will try to kill you, while you explore the unknown parts of the facility. Check it out on the forum.

15 Puzzle

A simple puzzle game where you have to bring the scrambled pieces back in order again. Check it out on the forum.

Honorable Mentions

While not published exactly in January, I’ve picked out a few games that I just felt deserved a mention here.

Cinnamon Warfare

Cinnamon Warfare

It’s a two player game created by Nexus and few other people during the overnight contest at Devmania. The snowmen’s labor union is attacking you and you need to coordinate the building of a defense wall made out of gingerbread. Unfortunately I didn’t have a second player to really test it, but it looks nice and has some fun elements to it. Check it out on the forum.

Re:creation

Re:creation

This game has been in development for quite a while now, but it’s so great and Elias Daler, the developer behind it, is very open with all the tech he’s using. It’s a top-down RPG like game with an interesting mechanic called recreation. Checkout the forum thread for more information, it also contains among nice screenshots a lot of very interesting C++ discussions.