Comments (13)
This is something i can confirm. Using GDB with debug symbols does not lead to anything. (other than the fact the driver crashed)
0x00007fffec417878 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
This happens with both nouveau and llvmpipe. Last time i tried last month, it was also crashing.
I thought they would figure this out but guess not... It used to work so i'll try to bisect it and see what's going on.
from edge.
Ok, so i discovered the commit that makes the Linux build crash.
It's this one :
97efa22
If you uncomment RGL_GL3Enabled in the file src/hu_draw.cc at line 682, it will work properly.
Seems like Renderbuffers does not work properly on Linux... Or maybe the code is not compliant.
@Corbachu, why was this uncommented ?
from edge.
@gameblabla there's a command-line switch called -norenderbuffers. Use that, and the game should start.
Anyways, I made further GLSL shader path fixes (though shaders right now, while they now compile from path/file, still need to get the screen quad set up beforehand) that should get the game started. Please retry and let me know if it is fixed.
from edge.
@Corbachu I have tried the new build (commit 9fc9260) and it is still failing to launch doom. I have tried with and without the -norenderbuffers option, both without success.
I am using the latest proprietary linux nvidia drivers (387.34). In addition to this, the windows build of hyper3DGE (2.1.0 test 3) runs just fine in linux through wine. Lasty, other doom ports like gzdoom (tested a couple of days ago) compile and run just fine. Hope that helps.
EDIT: Also commit 59aaf38
from edge.
@dsdman Have you tried the newest revision?? Made some big changes..try it out. If it still fails then it might be a driver related issue.
from edge.
@Corbachu currently testing the newest revision. There is a build error on line 271 of con_main.cc due to a function call to '_strupr', which seems to be a part of the Microsoft C library (probably not supported in GNU gcc/g++, hence the build error). It compiles if you comment out the line or change it to strdup.
Once compiled, it still doesn't run Doom, so it may be some kind of proprietary Nvidia driver issue with linux, although I have no idea how to confirm if this is the case or not. When I try to debug it using gdb, it claims that the program exited normally.
from edge.
@dsdman What does your Debug.txt contain? That would help me figure out what is going wrong, specifically the OpenGL settings. If it turns out GLSL isn't supported or working right, than it might be the cause. Also, the program should be calling I_Error, not just exiting normally, so that makes me think some sort of OpenGL Extension is mucking stuff up.
Try recompiling with the DEBUG pre-processor, and you could even use DEVELOPERS. Usually I use those if I need a little more information about what is going on that can't normally be provided otherwise. And, just if it helps, I also use the pre-processor flag NDEBUG.
from edge.
So, I tried my hand at this and I found something rather amusing.
On Linux, E_Main is never called from main. That's... a rather big oversight.
Technically, this is not a crash, it just exits cleanly.
from edge.
@Corbachu I have recompiled with "-DDEBUG -DDEVELOPERS -DNDEBUG" added to the definitions in CMakeLists, but there seems to be no 'Debug.txt' generated when I run hyper3dge (I can confirm that the preprocessors are being passed if I enable VERBOSE when compiling). I do however have the output of gdb log file:
`Breakpoint 1 at 0x10e555: file /home/dylan/apps/src/hyper3DGE/src/system/i_main.cc, line 1.
Starting program: /home/dylan/apps/src/hyper3DGE/bin/3DGE -iwad DOOM2.WAD
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".Breakpoint 1, main (argc=3, argv=0x7fffffffea18) at /home/dylan/apps/src/hyper3DGE/src/system/i_main.cc:64
64 bool allow_coredump = false;
65 for (int i = 1; i < argc; i++)
66 if (strcmp(argv[i], "-core") == 0)
0x00007ffff54269e0 in strcmp_ifunc () from /usr/lib/libc.so.6
Single stepping until exit from function strcmp_ifunc,
which has no line number information.
0x00007ffff54d3670 in __strcmp_ssse3 () from /usr/lib/libc.so.6
Single stepping until exit from function __strcmp_ssse3,
which has no line number information.
main (argc=3, argv=0x7fffffffea18) at /home/dylan/apps/src/hyper3DGE/src/system/i_main.cc:65
65 for (int i = 1; i < argc; i++)
66 if (strcmp(argv[i], "-core") == 0)
65 for (int i = 1; i < argc; i++)
69 I_SetupSignalHandlers(allow_coredump);
I_SetupSignalHandlers (allow_coredump=false) at /home/dylan/apps/src/hyper3DGE/src/system/unx/unx_system.cc:146
146 signal(SIGPIPE, I_SignalHandler); // CPhipps - add SIGPIPE, as this is fatal
148 if (allow_coredump)
155 signal(SIGSEGV, I_SignalHandler);
156 signal(SIGTERM, I_SignalHandler);
157 signal(SIGILL, I_SignalHandler);
158 signal(SIGFPE, I_SignalHandler);
159 signal(SIGILL, I_SignalHandler);
160 signal(SIGINT, I_SignalHandler); // killough 3/6/98: allow CTRL-BRK during init
161 signal(SIGABRT, I_SignalHandler);
162 }
main (argc=3, argv=0x7fffffffea18) at /home/dylan/apps/src/hyper3DGE/src/system/i_main.cc:77
77 I_CheckAlreadyRunning();
I_CheckAlreadyRunning () at /home/dylan/apps/src/hyper3DGE/src/system/unx/unx_system.cc:167
167 }
main (argc=3, argv=0x7fffffffea18) at /home/dylan/apps/src/hyper3DGE/src/system/i_main.cc:143
143 return 0;
145 }
0x00007ffff53c1f4a in __libc_start_main () from /usr/lib/libc.so.6
Single stepping until exit from function __libc_start_main,
which has no line number information.
[Inferior 1 (process 8365) exited normally]
`
Judging from this, it seems to be that @OrdinaryMagician might be right about E_Main not being called, as it seems to never leave i_main.cc.
from edge.
UPDATE: I have now got the program to run by adding:
#ifdef LINUX
try {
E_Main(argc, (const char **) argv);
//common_main(argc, argv);
}
catch (int e) {
I_Error(0, "Exception caught in main: see CRASHLOG.TXT for info\n");
}
#endif
below line 142 (just below the WIN32 ifdef). I then had to add edge.epk from the windows build (seems to be missing from data.) Now the program runs, but there are no graphics (no menu, no game graphics) sounds seem to work just fine.
EDIT: Here is the output of the program.
log.txt
EDIT2: I have found both 'Debug.txt' and 'edgegl.txt' in my home directory (~/.EDGE2) while doing something else. Here they are:
debug.txt
edgegl.txt is empty.
from edge.
@dsdman Go ahead and commit your changes for the other Linux users, if you can, I appreciate it :-) @OrdinaryMagician thank you so much for looking into it <3
Enable edgegl.txt output, I forget where I had it ifdefed (at work ATM), but its used to show if the shaders have been compiled and read successfully. Also try running again with -norenderbuffers.
from edge.
@dsdman, marking as resolved - for missing display, open another issue so we can track it, thanks again! :-)
from edge.
hehe this bit me (i'm baaack! ;) Same issue hits me on OpenBSD, but many things have changed since I last was involved. I'll try and make some neat little pull requests shortly....
from edge.
Related Issues (20)
- No GL Display on Linux HOT 14
- Networking Overhaul
- mods acting pretty weird on current master HOT 4
- Possible Future Feature: INI Parsing for Engine Configuration (replacing edge2.cfg) HOT 5
- Changing any boolean option through menu doesn't update the CVar HOT 4
- Idea: rework the old defaults system as CVars HOT 3
- IWAD handling (EGM vs INI) HOT 1
- Doom, line action type troubles HOT 2
- Doom, sector light to darkest linetypes HOT 1
- Feature/Renderer: fix up glBindAttribLocation HOT 2
- Renderer - only HUD and Sky is rendered HOT 5
- Unable to get past 3rd step from the CMake/Visual Studio Building Instructions page. HOT 7
- Duplicated SSE2NEON headers HOT 1
- FEATURE: MP3 Support HOT 4
- Mac M1 Support for Cmake HOT 15
- No textures found on darkwar.wad HOT 3
- build on Pi4 HOT 9
- New Renderer Fixup
- Compilation instructions on Linux?
- How to change argument HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from edge.