[EDIT:] You edited you post as I was writing mine. I guess I'm gonna build Allegro myself and make some tests. I've built it before but this time I was being lazy and decided to use the version from the Debian repository. I will report back the results. Thanks.
[Original post follows]
- I would make sure you've got a proper compiled version of Allegro. No "multiple versions on my system" that'll blow up if the installed vs compiled are different.
I have only the version from the official Debian repository installed.
- Does removing windowed mode affect it?
Same result. Actually, the following code has the same issue. I guess it can't be smaller than that:
When you say, "halt" you mean it freezes right? Not "it crashes to desktop/terminates".
That's right, the Allegro window freezes. I'd expect the Allegro window to appear as I call al_create_display() and then to close immediately; instead, the Allegro window remains onscreen and I have to force the program termination.
- One more clarification: You gave us sample code. Does that sample code (exactly as written) do what you describe?
Yes, as does the code posted here.
What's your hardware look like? Do you have multiple graphics adapters?
Just a single AMD graphics card:
OpenGL renderer string: Gallium 0.4 on AMD CEDAR (DRM 2.49.0 / 4.9.0-4-amd64, LLVM 3.9.1)
I'm gonna try running it with gdb now.
[EDIT 2:] Built Allegro 5.2.3 and got the same result. Weird. This is gbd's backtrace:
Starting program: /home/ken/code/allegro/a.out
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff3048700 (LWP 11910)]
Allegro version: 5.2.2
[New Thread 0x7fffed11e700 (LWP 11911)]
[Thread 0x7fffed11e700 (LWP 11911) exited]
[Thread 0x7ffff3048700 (LWP 11910) exited]
^C <-- Forced program termination here
Thread 1 "a.out" received signal SIGINT, Interrupt.
185 ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: No such file or directory.
#0 pthread_cond_wait@@GLIBC_2.3.2 ()
#1 0x00007ffff1e9893b in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#2 0x00007ffff21cde2f in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#3 0x00007ffff21edef6 in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#4 0x00007ffff21ecd7e in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#5 0x00007ffff1caaaf4 in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#6 0x00007ffff1b5c448 in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#7 0x00007ffff1ceb5ab in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#8 0x00007ffff1dfe04f in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#9 0x00007ffff1dfdafa in ?? () from /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
#10 0x00007ffff62374f5 in glXMakeCurrentReadSGI ()
#11 0x00007ffff7b2eb44 in al_set_target_bitmap ()
#12 0x00007ffff7b1a54f in al_destroy_display ()
#13 0x00007ffff7b76df2 in ?? ()
#14 0x00007ffff7b2bf35 in ?? ()
#15 0x00007ffff7b1feed in _al_run_exit_funcs ()
---Type <return> to continue, or q <return> to quit---
#16 0x00007ffff7b2c015 in al_uninstall_system ()
#17 0x00007ffff754b910 in __run_exit_handlers (status=0,
#18 0x00007ffff754b96a in __GI_exit (status=<optimized out>) at exit.c:105
#19 0x00007ffff75362b8 in __libc_start_main (main=0x555555554a30 <main>,
argc=1, argv=0x7fffffffe258, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fffffffe248)
#20 0x000055555555492a in _start ()
A debugging session is active.
Inferior 1 [process 11903] will be killed.
Quit anyway? (y or n) y
It's probably a problem with my Linux distro?. Anyway, it's not a big deal since a typical Allegro 5 program execution wouldn't hit this issue, I guess, as calling al_flip_display() seems to solve the problem. Posting it here just in case it's of some use.