|
This thread is locked; no one can reply to it. |
1
2
|
Allegro 4.4.1 + MinGW64 errors! |
Zepper
Member #8,715
June 2007
|
Now I know my confusion. http://alleg.sourceforge.net/wip.html (it has 4.4.1 as downloads, outdated page, must be disabled).
|
Thomas Fjellstrom
Member #476
June 2000
|
Edgar Reynaldo said: I downloaded the .rar and extracted it over allegro 4.4.X and tried to run git diff but it is totally retarded. The diffs just aren't coming out right. It's trying to replace nearly the whole file in some cases, and there are a lot of files to be patched. Not sure what to do. I think you can tell it to ignore whitespace changes (which should fix issues with line endings), or ignore line endings... Or do a batch dtou on it? -- |
Edgar Reynaldo
Major Reynaldo
May 2007
|
Here's the output of 'git diff --ignore-space-change'. I think it could use some revision though. My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
Zepper
Member #8,715
June 2007
|
Here's a problem I'm unable to solve it. File src/win/wwnd.c, line 480. Problem: comparison is always true: result >= WAIT_OBJECT_0 1 /* message loop */
2 while (TRUE) {
3 result = MsgWaitForMultipleObjects(_win_input_events, _win_input_event_id, FALSE, INFINITE, QS_ALLINPUT);
4 if ((result >= WAIT_OBJECT_0) && (result <= WAIT_OBJECT_0 + _win_input_events)) {
5 /* one of the registered events is in signaled state */
6 (*_win_input_event_handler[result - WAIT_OBJECT_0])();
7 }
8 else if (result == WAIT_OBJECT_0 + _win_input_events) {
|
Thomas Fjellstrom
Member #476
June 2000
|
result is probably unsigned, and WAIT_OBJECT is 0. So its not really an error, but it is a pointless comparison. -- |
Edgar Reynaldo
Major Reynaldo
May 2007
|
This is the code in git : 477 /* message loop */
478 while (TRUE) {
479 result = MsgWaitForMultipleObjects(_win_input_events, _win_input_event_id, FALSE, INFINITE, QS_ALLINPUT);
480 if ((result >= WAIT_OBJECT_0) && (result < (int)(WAIT_OBJECT_0 + _win_input_events))) {
481 /* one of the registered events is in signaled state */
482 (*_win_input_event_handler[result - WAIT_OBJECT_0])();
483 }
484 else if (result == WAIT_OBJECT_0 + _win_input_events) {
485 /* messages are waiting in the queue */
486 while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
487 if (GetMessage(&msg, NULL, 0, 0)) {
488 DispatchMessage(&msg);
489 }
490 else {
491 goto End;
492 }
493 }
494 }
495 }
You changed && (result < (int)(WAIT_OBJECT_0 + win_input_events))) to <=, which is incorrect according to MSDN : Return code/value Description WAIT_OBJECT_0 to (WAIT_OBJECT_0 + nCount– 1)
If bWaitAll is TRUE, the return value indicates that the state of all specified objects is signaled. If bWaitAll is FALSE, the return value minus WAIT_OBJECT_0 indicates the pHandles array index of the object that satisfied the wait. WAIT_OBJECT_0 + nCount
New input of the type specified in the dwWakeMask parameter is available in the thread's input queue. Functions such as PeekMessage, GetMessage, and WaitMessage mark messages in the queue as old messages. Therefore, after you call one of these functions, a subsequent call to MsgWaitForMultipleObjects will not return until new input of the specified type arrives. This value is also returned upon the occurrence of a system event that requires the thread's action, such as foreground activation. Therefore, MsgWaitForMultipleObjects can return even though no appropriate input is available and even if dwWakeMask is set to 0. If this occurs, call GetMessage or PeekMessage to process the system event before trying the call to MsgWaitForMultipleObjects again.
Edit My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
Zepper
Member #8,715
June 2007
|
My program (using Allegro) crashes exactly there.
|
Edgar Reynaldo
Major Reynaldo
May 2007
|
Can you post a backtrace? And the values of local variables? My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
Zepper
Member #8,715
June 2007
|
EDIT2: even without warnings, my emu crashes after loading a game. I tested a few Allegro programs (like Allegro demo) and it worked. 1static void wnd_thread_proc(HANDLE setup_event)
2{
3 int result;
4 MSG msg;
5
6 _win_thread_init();
7 _TRACE(PREFIX_I "window thread starts\n");
8
9 /* setup window */
10 if (wnd_create_proc)
11 allegro_wnd = wnd_create_proc(directx_wnd_proc);
12 else
13 allegro_wnd = create_directx_window();
14
15 if (!allegro_wnd)
16 goto End;
17
18 /* now the thread it running successfully, let's acknowledge */
19 SetEvent(setup_event);
20
21 /* message loop */
22 while (TRUE) {
23 result = MsgWaitForMultipleObjects(_win_input_events, _win_input_event_id, FALSE, INFINITE, QS_ALLINPUT);
24 if ((result >= (int)WAIT_OBJECT_0) && (result < (int)(WAIT_OBJECT_0 + _win_input_events))) {
25 /* one of the registered events is in signaled state */
26 (*_win_input_event_handler[result - WAIT_OBJECT_0])();
27 }
28 else if (result == (int)(WAIT_OBJECT_0 + _win_input_events)) {
29 /* messages are waiting in the queue */
30 while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
31 if (GetMessage(&msg, NULL, 0, 0)) {
32 DispatchMessage(&msg);
33 }
34 else {
35 goto End;
36 }
37 }
38 }
39 }
40
41 End:
42 _TRACE(PREFIX_I "window thread exits\n");
43 _win_thread_exit();
44}
|
Edgar Reynaldo
Major Reynaldo
May 2007
|
Zepper said: EDIT2: even without warnings, my emu crashes after loading a game. I tested a few Allegro programs (like Allegro demo) and it worked. Sorry, you're being a little vague here - you are running allegro programs through an emulator you wrote? And some programs work, but not others? With or without the patch to wwnd.c? My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
Zepper
Member #8,715
June 2007
|
shrugs My program is a NES videogame emulator for Windows. It uses Allegro.
|
Edgar Reynaldo
Major Reynaldo
May 2007
|
Okay, like I said before, can you post a backtrace? And the values of local variables? You can use 'bt' and 'info locals' within GDB to accomplish this. gdb>backtrace ... gdb>frame 0 gdb>info locals
My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
Zepper
Member #8,715
June 2007
|
Not much info. The GUI loads normally. Once I select a file, it crashes and the mouse becomes very very slow. 1C:\rnes>gdb rocknes
2GNU gdb (GDB) 7.6.1
3Copyright (C) 2013 Free Software Foundation, Inc.
4License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
5This is free software: you are free to change and redistribute it.
6There is NO WARRANTY, to the extent permitted by law. Type "show copying"
7and "show warranty" for details.
8This GDB was configured as "x86_64-w64-mingw32".
9For bug reporting instructions, please see:
10<http://www.gnu.org/software/gdb/bugs/>...
11Reading symbols from C:\rnes\rocknes.exe...done.
12(gdb) r
13Starting program: C:\rnes/rocknes.exe
14[New Thread 3284.0x3e8]
15[New Thread 3284.0xda4]
16[New Thread 3284.0x988]
17[New Thread 3284.0xc60]
18[New Thread 3284.0x5ec]
19[New Thread 3284.0xc24]
20[New Thread 3284.0xd28]
21[New Thread 3284.0xdb0]
22[New Thread 3284.0xdb8]
23[New Thread 3284.0x7f4]
24[New Thread 3284.0xdb4]
25[New Thread 3284.0xfec]
26[New Thread 3284.0x9a0]
27[New Thread 3284.0xdf8]
28[New Thread 3284.0x520]
29[New Thread 3284.0xf1c]
30[New Thread 3284.0x46c]
31[New Thread 3284.0xcf0]
32[New Thread 3284.0xd90]
33warning: Critical error detected c0000374
34
35
36Program received signal SIGTRAP, Trace/breakpoint trap.
370x0000000077b940d0 in ntdll!RtlUnhandledExceptionFilter ()
38 from C:\Windows\system32\ntdll.dll
39(gdb) back
40#0 0x0000000077b940d0 in ntdll!RtlUnhandledExceptionFilter ()
41 from C:\Windows\system32\ntdll.dll
42#1 0x000000000022f160 in ?? ()
43#2 0x000007fefe9c10c8 in msvcrt!free () from C:\Windows\system32\msvcrt.dll
44#3 0x0000000077b94120 in ntdll!RtlUnhandledExceptionFilter ()
45 from C:\Windows\system32\ntdll.dll
46#4 0x00000000c0000374 in ?? ()
47#5 0x0000000000000001 in ?? ()
48#6 0x0000000000000001 in ?? ()
49#7 0x000000000340ccd0 in ?? ()
50#8 0x0000000000435d1c in gzclose_r ()
51#9 0x0000000000000003 in ?? ()
52#10 0x0000000000000000 in ?? ()
53(gdb) frame 0
54#0 0x0000000077b940d0 in ntdll!RtlUnhandledExceptionFilter ()
55 from C:\Windows\system32\ntdll.dll
56(gdb) info locals
57No symbol table info available.
58(gdb) q
59A debugging session is active.
60
61 Inferior 1 [process 3284] will be killed.
62
63Quit anyway? (y or n) y
|
Edgar Reynaldo
Major Reynaldo
May 2007
|
Did you use a debugging version of allegro? (-DCMAKE_BUILD_TYPE=Debug to cmake command), there is usually more info. You probably also need to select the correct thread to get a backtrace with main in it. Just curious, but how do you know where it is crashing? This should get you some better information : gdb>info threads gdb>thread # (select each thread # until you find the thread that contains the main function) gdb>backtrace
gdb>frame # (select the frame # that corresponds to the frame that called MsgWaitForMultipleObjects, if that is where it crashed) info locals
My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
Thomas Fjellstrom
Member #476
June 2000
|
could also try "thread apply all bt full". -- |
Edgar Reynaldo
Major Reynaldo
May 2007
|
Hey! I was just about to suggest that! I thought I was being clever too. My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
|
1
2
|