Reus > General Discussions > Topic Details
flibitijibibo  [developer] Jan 9 @ 10:21am
[PSA] [Mac/Linux BETA] READ HERE FIRST!
First, an introduction: I am the Linux/Mac porter for Reus. I did the MonoGame-SDL2 ports that will eventually become the main Windows version of Reus. NOTE: Not an employee of Abbey Games, just a contractor! You may be familiar with my ports of FEZ, Rogue Legacy, Dust: AET, Escape Goat, Capsized, and other XNA games.

UPDATE (April 24, 2014): Before we continue, I want to make note of the `beta` branch available on Steam. If you open up the betas tab for Reus, you'll find "Protected beta". Don't mind this... it's not only open to everyone, but it has a build of Reus that is using upstream FNA, the new XNA4 reimplementation I'm releasing this year. Give this a try if you're experiencing problems with the current version!

The ports are mostly in BETA status, but so far there has only been one major crash and it has since been fixed, so what is left? Here's my own roadmap, for your convenience and to possibly help track anything I've missed:

- [FMOD] CRASH ON MONSOON: Still trying to diagnose if this is really FMOD. May just need to update the FMOD lib and audio content.

So far this is all I have on file. Resolved issues:

- [OSX] [LINUX] HANG ON EXIT: As of the latest Steam client beta (April 21) this is finally fixed!
- [OSX] [LINUX] EMPTY TEXTBOX: Resolved for some, but others are actually intentional! At this point, you should now assume that empty spaces are intentional.
- [OSX] [LINUX] FULLSCREEN ALT-TAB: Resolved by fixing IsActive state management
- [OSX] [LINUX] DOUBLE CLICK: This was resolved by... erm... adding it. Had done it in one place but not another. welp
- [LINUX] DEADLOCK: This was resolved by removing Parallel operations from Reus. This both fixed deadlocks and drastically improved performance for both platforms.
- [OSX] PERFORMANCE: This was resolved by switching to SGen for garbage collection. Stuttering audio and related problems should no longer exist, though the game is still graphically intensive.
- SDL CRASH: In the day 1 build there was a crash on SDL_SetSurfaceBlendMode, this was fixed and no revision on Steam has this bug.

Thanks in advance for your patience and support! We'll get this thing working well eventually!
Last edited by flibitijibibo; Apr 24 @ 12:05pm
Showing 1-15 of 201 comments
< >
MikeDebian Jan 9 @ 10:55am 
Thanks for the Linux ports! It looks like a fun and interesting game, however I am one of those that experience the "DEADLOCK" bug as you call it. If you need any information, please tell us where to file a report!
adolson Jan 9 @ 11:06am 
I'm glad to finally get to try this! Thanks to you for your work, and to Abbey Games for making it happen. It's downloading now; hopefully I'll have time to check it out tonight.
flibitijibibo  [developer] Jan 9 @ 11:09am 
I just pushed an update to Reus:

Linux/Mac: Add steam_appid.txt, allows running through terminal
Mac: Update MonoKickstart binaries with new libmonosgen binaries. 32-bit only, but should fix performance!


Originally posted by |iNSANE| Mike - Oculus Gaming:
Thanks for the Linux ports! It looks like a fun and interesting game, however I am one of those that experience the "DEADLOCK" bug as you call it. If you need any information, please tell us where to file a report!
For GDB backtraces, you can add this to your ~/.gdbinit file:

handle SIGPWR ignore noprint pass
handle SIGXCPU ignore noprint pass

define mono_backtrace
select-frame 0
set $i = 0
while ($i < $arg0)
set $foo = (char*) mono_pmip ($pc)
if ($foo)
printf "#%d %p in %s\n", $i, $pc, $foo
else
frame
end
up-silently
set $i = $i + 1
end
end

The first two lines ignore some system signals that Mono casually throws around, and the mono_backtrace line adds a command to GDB that will print some Mono-specific information in a backtrace call. The idea is to `run` the app in GDB, then when it hangs, Ctrl+C and run `backtrace`, `thread apply all backtrace`, and `mono_backtrace`.
douglas Jan 9 @ 11:35am 
and then post the output of mono_backtrace here?

that would be
(gdb) mono_backtrace 10
#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
185 ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: No such file or directory.
#1 0x00007ffff7a61cac in _wapi_handle_timedwait_signal_handle (handle=0x400, timeout=0x0, alertable=1, poll=<optimized out>) at handles.c:1655
1655 handles.c: No such file or directory.
#2 0x00007ffff7a72c49 in WaitForMultipleObjectsEx (numobjects=2, handles=0xc515790, waitall=0, timeout=4294967295, alertable=1) at wait.c:722
722 wait.c: No such file or directory.
#3 0x00007ffff7a43554 in ves_icall_System_Threading_WaitHandle_WaitAny_internal (mono_handles=0x7fffad5f3000, ms=-1, exitContext=<optimized out>) at threads.c:1616
1616 threads.c: No such file or directory.
#4 0x4023bafa in (wrapper managed-to-native) System.Threading.WaitHandle:WaitAny_internal (System.Threading.WaitHandle[],int,bool) + 0x6a (0x4023ba90 0x4023bb1a) [0x7ffff7fb9cc0 - Reus.exe]
#5 0x0000000000605a10 in ?? ()
...
MikeDebian Jan 9 @ 11:43am 
Well, I did the gdb Reus.bin.x86, typed in "run" and CTRL + C'ed when it hanged. I don't know if I did it right. Then I typed in the command from the person above me, which resulted in:


Edit: Did a pastebin http://pastebin.com/BtbMab4V

It has more information than my previous post.
Last edited by MikeDebian; Jan 9 @ 11:48am
Dalek Jan 9 @ 11:43am 
Had the deadlock after playing a while in Third Era and now after running from gdb I got it after loading the level, I did alt + tab when it was loading don't know if it helps.

Here's the output http://pastebin.com/Gf0JdUXa Hope it helps
adolson Jan 9 @ 11:56am 
Hey again, I gave it a shot on my lunch break real quick. Only thing I noticed so far, and I dunno if it's just me or if it's related to the deadlock issue or not, but if I Alt+Tab or Ctrl+Alt+Left/Right to another desktop and go back in, I just get a black screen and the Reus mouse cursor.
flibitijibibo  [developer] Jan 9 @ 12:19pm 
Awesome, thanks for all the GDB traces everyone. It's looking more and more like it's the parallel ops, so I'll take a look at that ASAP.


Originally posted by adolson:
Hey again, I gave it a shot on my lunch break real quick. Only thing I noticed so far, and I dunno if it's just me or if it's related to the deadlock issue or not, but if I Alt+Tab or Ctrl+Alt+Left/Right to another desktop and go back in, I just get a black screen and the Reus mouse cursor.
If that happens to be on NVIDIA hardware, this is a "known" issue with MG-SDL2 titles... alt-tabbing these games either leads to that or it just segfaults in the driver; I'm not sure what the root cause is. The black screen suggests it's something happening with the faux-backbuffer we use for display scaling, but that's just a guess.
Dalek Jan 9 @ 12:23pm 
I finished the Third Era level now without problem without doing any alt + tab. Here is the output of this time http://pastebin.com/WjmE01tE

Originally posted by flibitijibibo:
If that happens to be on NVIDIA hardware, this is a "known" issue with MG-SDL2 titles... alt-tabbing these games either leads to that or it just segfaults in the driver; I'm not sure what the root cause is. The black screen suggests it's something happening with the faux-backbuffer we use for display scaling, but that's just a guess.

Yeah, here I have a NVidia, but I don't remember having the same issue in any other of your ports
Footissimo Jan 9 @ 12:29pm 
Thanks for the work again, flibitijibobitojo =)
Dirklectisch Jan 9 @ 12:33pm 
Hi!

I can't seem to start a new game on OS X 10.7.5. I'm getting to the loading screen, it loads an says 'press any button to start...'. When i do I get the following error and the game crashes:

System.DllNotFoundException: opengl32.dll
at (wrapper managed-to-native) OpenTK.Graphics.OpenGL.GL/Core:VertexAttribDivisor (uint,uint)
at OpenTK.Graphics.OpenGL.GL.VertexAttribDivisor (Int32 index, Int32 divisor) [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.Graphics.GraphicsDevice.INTERNAL_FlushVertexAttributes () [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.Graphics.GraphicsDevice.DrawInstancedPrimitives (PrimitiveType primitiveType, Int32 baseVertex, Int32 minVertexIndex, Int32 numVertices, Int32 startIndex, Int32 primitiveCount, Int32 instanceCount) [0x00000] in <filename unknown>:0
at SpaceTech.Graphics.SpriteBatcher.RenderInstanced () [0x00000] in <filename unknown>:0
at SpaceTech.Graphics.SpriteBatcher.Submit () [0x00000] in <filename unknown>:0
at SpaceTech.Graphics.RenderManager2D.Draw (Eye eye, Single aspectRatio) [0x00000] in <filename unknown>:0
at Reus.View.GameScreen.OnRender (SpaceTech.UI.Controls.RenderContext context) [0x00000] in <filename unknown>:0
at Reus.View.GameplayScreen.OnRender (SpaceTech.UI.Controls.RenderContext context) [0x00000] in <filename unknown>:0
at SpaceTech.UI.Controls.UIControl.Render (SpaceTech.UI.Controls.RenderContext context) [0x00000] in <filename unknown>:0
at SpaceTech.UI.Rendering.UIRenderer.RenderUIControl (SpaceTech.UI.Rendering.UIRenderContext context) [0x00000] in <filename unknown>:0
at SpaceTech.UI.Rendering.UIRenderer.Render (SpaceTech.UI.Controls.UIControl control, SpaceTech.UI.Controls.RenderContext controlContext) [0x00000] in <filename unknown>:0
at SpaceTech.UI.Controls.UIScreen.OnRender (SpaceTech.UI.Controls.RenderContext context) [0x00000] in <filename unknown>:0
at SpaceTech.UI.Controls.UIControl.Render (SpaceTech.UI.Controls.RenderContext context) [0x00000] in <filename unknown>:0
at SpaceTech.UI.Controls.UIScreen.Draw (Microsoft.Xna.Framework.GameTime gameTime) [0x00000] in <filename unknown>:0
at Reus.View.ViewComponent.Draw (Microsoft.Xna.Framework.GameTime gameTime) [0x00000] in <filename unknown>:0
at Reus.GameplayComponent.Draw (Microsoft.Xna.Framework.GameTime gameTime) [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.Game.<DrawAction>m__D (IDrawable drawable, Microsoft.Xna.Framework.GameTime gameTime) [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.Game+SortingFilteringCollection`1[Microsoft.Xna.Framework.IDrawable].ForEachFilteredItem[GameTime] (System.Action`2 action, Microsoft.Xna.Framework.GameTime userData) [0x00000] in <filename unknown>:0
at Microsoft.Xna.Framework.Game.Draw (Microsoft.Xna.Framework.GameTime ga

Here are my system specs:

Processor 2.5 GHz Intel Core i5
Memory 8 GB 1333 MHz DDR3
Graphics AMD Radeon HD 6750M 512 MB

Hope this helps getting the game up and running.

Thanks in advance!
adolson Jan 9 @ 12:34pm 
Originally posted by flibitijibibo:
Awesome, thanks for all the GDB traces everyone. It's looking more and more like it's the parallel ops, so I'll take a look at that ASAP.


Originally posted by adolson:
Hey again, I gave it a shot on my lunch break real quick. Only thing I noticed so far, and I dunno if it's just me or if it's related to the deadlock issue or not, but if I Alt+Tab or Ctrl+Alt+Left/Right to another desktop and go back in, I just get a black screen and the Reus mouse cursor.
If that happens to be on NVIDIA hardware, this is a "known" issue with MG-SDL2 titles... alt-tabbing these games either leads to that or it just segfaults in the driver; I'm not sure what the root cause is. The black screen suggests it's something happening with the faux-backbuffer we use for display scaling, but that's just a guess.
I do have an NVIDIA card with the 304.x driver (the latest option in Arch has many other issues. I'm waiting for the new release before switching back. See here: https://devtalk.nvidia.com/default/topic/633706/linux/recent-drivers-cause-applications-to-hang-not-start-at-all-or-compilation-failures).
flibitijibibo  [developer] Jan 9 @ 1:16pm 
Originally posted by Dirklectisch:
Hi!

I can't seem to start a new game on OS X 10.7.5. I'm getting to the loading screen, it loads an says 'press any button to start...'. When i do I get the following error and the game crashes:

---SNIP---

Here are my system specs:

Processor 2.5 GHz Intel Core i5
Memory 8 GB 1333 MHz DDR3
Graphics AMD Radeon HD 6750M 512 MB

Hope this helps getting the game up and running.

Thanks in advance!
Your setup does not support hardware instancing, which Reus uses for sprite drawing.

There's a possible workaround, but it's unsupported at the moment. Open up ~/Library/Application Support/Reus/Config.xml and add this:

<Rendering>
<DisableInstancing>true</DisableInstancing>
</Rendering>

There may be a <Rendering /> tag already, just replace it with this.

This will use a workaround for the sprite drawing, but note that it is MUCH slower than the hardware instancing path.
Last edited by flibitijibibo; Jan 12 @ 12:29pm
Where is this gdbinit?
Dirklectisch Jan 9 @ 3:18pm 
Originally posted by flibitijibibo:
Your setup does not support hardware instancing, which Reus uses for sprite drawing.

Hmm is that a problem with my hardware or do I just need to update to a more recent OS X version?

Originally posted by flibitijibibo:
There's a possible workaround, but it's unsupported at the moment.

Unfortunately that work around does't work for me. It results in the same error. After running the game the config file is overwritten and the extra setting in the video node is gone.

Thanks for your help!
Showing 1-15 of 201 comments
< >
Per page: 15 30 50