You should not create those surfaces in the on_draw event. On the one hand, you are creating them each time the event is called, which is probably unnecessary and may slow down the game. On the other hand, on_draw is not always called, so it might happen that your surface is not created and get an error or crash when you try to access it from other function.
1. This is not the case. The same error occurs.
2. The error does not involve Wine. I tried it in my Windows 7 OS and the same error occurred.
3. I also tried tests with sol.audio.play_music("none"), but this made no difference.
4. I played the music with sol.audio.play_sound() and no crashed occurred. Sadly, I cannot stop sound with sol.audio.play_sound(), so I have a bunch of music playing at the same time.
I think it is a bug in the engine. I would think sol.audio.play_sound() would make the same crash. Kinda difficult to pinpoint the problem, but there are only few differences between sol.audio.play_sound() and sol.audio.play_music(). sol.audio.play_music() stops audio after another audio file is played and maybe that becomes overloaded somehow.