SDRPlusPlus icon indicating copy to clipboard operation
SDRPlusPlus copied to clipboard

Latest Windows Build Binaries not running on OpenGL 2.1 Card

Open Voyager-III opened this issue 3 years ago • 22 comments

Hi, I tried the latest Windows Build Binary on my laptop with an OpenGL 2.1 Card it tries to start with a white screen and crashes? but when I compile the linux version from the master branch it runs perfect, I see that you have added OpenGL 2.1 support but does it only run on linux for the moment, Thanks

Voyager-III avatar Sep 13 '21 00:09 Voyager-III

Can you run SDR++ from a terminal with the -s command line argument and send back what it logs?

AlexandreRouma avatar Sep 13 '21 19:09 AlexandreRouma

Hi, Thanks for getting back to me this is the log

[2021-09-13 21:02:19.095] [info] SDR++ v1.0.4 [2021-09-13 21:02:19.097] [info] Loading config [2021-09-13 21:02:19.358] [error] Glfw Error 65543: Requested OpenGL version 3.0 , got version 2.1 [2021-09-13 21:02:19.361] [info] OpenGL 3.0 was not supported [2021-09-13 21:02:19.371] [error] Glfw Error 65542: WGL: OpenGL ES requested but WGL_ARB_create_context_es2_profile is unavailable [2021-09-13 21:02:19.372] [info] OpenGL 3.1 ES was not supported [2021-09-13 21:02:19.486] [info] Using OpenGL 2.1

and then it start's to load a white screen and crashes, my graphics card is a GeForce Go 7400 which supports OpenGL 2.1

Voyager-III avatar Sep 13 '21 20:09 Voyager-III

is there really nothing else printed in the console after that? I need the full thing to know what's really going on. I doubt this has anything to do with opengl

AlexandreRouma avatar Sep 13 '21 20:09 AlexandreRouma

It just return's to the command prompt, I will upload a screenshot Untitled

Voyager-III avatar Sep 13 '21 20:09 Voyager-III

Please show a screenshot of the terminal when it crashes

AlexandreRouma avatar Sep 17 '21 09:09 AlexandreRouma

Hi, Here is the screenshot of the command line when it crashes and another when I close the program Untitled Untitled2

Voyager-III avatar Sep 17 '21 11:09 Voyager-III

Ok, are you sure SDR++ has read/write file access rights where you decompressed it?

Also, make sure your graphics drivers are up to date.

I'd also be interested in the specs of the computer (CPU/GPU/RAM)

AlexandreRouma avatar Sep 17 '21 14:09 AlexandreRouma

This is my screenshot of my CPU and GPU I have 4.00GB RAM (3.00GB) Usable 64bit Windows 8.1 I have tried Windows 7 and it has the same problem, The graphics driver is the latest possible the built in card is not supported anymore Untitled

Voyager-III avatar Sep 17 '21 14:09 Voyager-III

How much free ram have you actually got when starting SDR++? Windows is pretty well known for hoarding a bunch of ram at startup... SDR++ needs almost 2GB last time I checked, mostly because of OpenGL and the enormous waterfall history buffer

AlexandreRouma avatar Sep 17 '21 14:09 AlexandreRouma

This is how much ram I have left it seems SDR++ does not use much when trying to start up but Windows Defender eats through it and Firefox, It is just the same even when I turn off windows defender even If the physical ram ran out it should still use the pagefile ram? Untitled

Voyager-III avatar Sep 17 '21 14:09 Voyager-III

I'm pretty sure I had the same problem trying to get SDR++ running on an old laptop on Linux today. The issue has been resolved in 1.04 (see #260), but for some reason, there are no binaries for 1.04. I had to build it from source. After many hurdles, I got it running on a 2010 laptop like a charm. You should ask the developer to put out binary releases with the fix, which came out 12 days after the most recent binary.

266-750Balloons avatar Sep 23 '21 00:09 266-750Balloons

The 1.03 binary doesn't work on Linux for same reason. I had to build 1.04 from source.

266-750Balloons avatar Sep 23 '21 00:09 266-750Balloons

If you look at the logs, he's already running 1.0.4 Also, the latest commit is always available in the automated builds.

AlexandreRouma avatar Sep 23 '21 06:09 AlexandreRouma

I have actually the same issue with an old laptop on ubuntu 20.04. I will try to build it from source

ValHarlet avatar Sep 23 '21 11:09 ValHarlet

SDR++ needs almost 2GB last time I checked, mostly because of OpenGL and the enormous waterfall history buffer

Depends on the FFT-size, doesn't it? I had some crashes in waterfall.cpp with 64k. But going down to 32768, it's rather stable.

Several places in that code is not checking for rawFFTs == NULL followed by a memset(rawFFTs, 0, ...);.

gvanem avatar Oct 02 '21 11:10 gvanem

because those places are never called when rawFFTs is null. waterfall.init() gets called way before that. I've checked several times with valgrind and asan, it doesn't have any kind of issue

AlexandreRouma avatar Oct 02 '21 12:10 AlexandreRouma

Really? When e.g. toggling off the "Display | Show Waterfall" check-button, and turning it on again, I once got this crash:

eax=00000000 ebx=009df8c4 ecx=04540000 edx=00f8a7a0 esi=009dea94 edi=00000000
eip=69bd381c esp=009de538 ebp=009de54c iopl=0         nv up ei pl nz na po cy
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010203
VCRUNTIME140!memset+0x3c:
69bd381c f3aa            rep stos byte ptr es:[edi]

The Call-stack clearly shows a memset() on a NULL-ptr (edi == 0 above and count == 10 349 204 bytes below):

VCRUNTIME140!memset(unsigned char * dst = 0x009dea94 "", unsigned char value = 0xa0 '', unsigned long count = 0x9dea94)+0x3c
sdrpp_core!ImGui::WaterFall::showWaterfall(void)+0x4f
sdrpp_core!displaymenu::draw(void * ctx = 0x00000000)+0x9f
sdrpp_core!Menu::draw(bool updateStates = false)+0x860
sdrpp_core!MainWindow::draw(void)+0x1641
sdrpp_core!sdrpp_main(int argc = 2, char ** argv = 0x00f81b28)+0x36f9
sdrpp!main(int argc = 2, char ** argv = 0x00f81b28)+0x10
sdrpp!invoke_main+0x1c
sdrpp!__scrt_common_main_seh(void)+0xfa
KERNEL32!BaseThreadInitThunk+0x19
ntdll!__RtlUserThreadStart+0x2f
ntdll!_RtlUserThreadStart+0x1b

Unsure about the value = 0xa0. This on a 32-bit version BTW.

gvanem avatar Oct 02 '21 13:10 gvanem

The only way it can be null is if a malloc operation failed. (try searching for rawFFTs = and look at the only code assigning it) I don't test on 32bit but I'm 90% sure it's the same thing and it's running out of memory. OpenGL takes a lot of memory by itself and when you add all the buffers for the DSP + the waterfall it's probably too much for 32bit windows to handle....

AlexandreRouma avatar Oct 02 '21 14:10 AlexandreRouma

hi prep myself id try vars options with your graphics card using linux then access denied opengl 3.0-1 because in some cases there has been issues were i found myself unable to use open gl software graphics in windows but yet run smootlys in others alex your doing a great job mate

On Sat, Oct 2, 2021 at 2:32 PM Gisle Vanem @.***> wrote:

Really? When e.g. toggling off the "Display | Show Waterfall" check-button, and turning it on again, I once got this crash:

eax=00000000 ebx=009df8c4 ecx=04540000 edx=00f8a7a0 esi=009dea94 edi=00000000

eip=69bd381c esp=009de538 ebp=009de54c iopl=0 nv up ei pl nz na po cy

cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010203

VCRUNTIME140!memset+0x3c:

69bd381c f3aa rep stos byte ptr es:[edi]

The Call-stack clearly shows a memset() on a NULL-ptr (edi == 0 above and count == 10 349 204 bytes below):

VCRUNTIME140!memset(unsigned char * dst = 0x009dea94 "", unsigned char value = 0xa0 '', unsigned long count = 0x9dea94)+0x3c

sdrpp_core!ImGui::WaterFall::showWaterfall(void)+0x4f

sdrpp_core!displaymenu::draw(void * ctx = 0x00000000)+0x9f

sdrpp_core!Menu::draw(bool updateStates = false)+0x860

sdrpp_core!MainWindow::draw(void)+0x1641

sdrpp_core!sdrpp_main(int argc = 2, char ** argv = 0x00f81b28)+0x36f9

sdrpp!main(int argc = 2, char ** argv = 0x00f81b28)+0x10

sdrpp!invoke_main+0x1c

sdrpp!__scrt_common_main_seh(void)+0xfa

KERNEL32!BaseThreadInitThunk+0x19

ntdll!__RtlUserThreadStart+0x2f

ntdll!_RtlUserThreadStart+0x1b

Unsure about the value = 0xa0. This on a 32-bit version BTW.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/AlexandreRouma/SDRPlusPlus/issues/354#issuecomment-932753008, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARSQ36KZN2THX6GETCXKPMLUE4CXDANCNFSM5D4UYM3A . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

app7713-design avatar Oct 02 '21 14:10 app7713-design

(try searching for rawFFTs = and look at the only code assigning it)

I know. I put some trace-code around those places; always realloc() that fails. Could such a huge buffer be pre-allocated at start-up instead? (based on max FFT-size etc.)

gvanem avatar Oct 02 '21 14:10 gvanem

That would be a complete was of memory. The point alloc reallocating is to use less ram. If malloc works but realloc fails, it's a bug in the libc and I can't do much about it.

AlexandreRouma avatar Oct 02 '21 14:10 AlexandreRouma

Hi, I wonder have you found my problem yet? I say it is most likely the crappy onboard Nvidia graphics card? I even have problems running linux on it! I have another laptop with 3GB Ram and with a intel x3100 graphics card which supports OpenGL 2.0, Under linux it supports OpenGL 2.1 and I was able to compile SDR++ and it runs perfect, the windows version however does not run, I was wondering if it is possible for you to dropdown support to OpenGL 2.0 I would love for it to run under windows aswell if it's not to much hassle, Thank you :)

Voyager-III avatar Oct 22 '21 11:10 Voyager-III

in retrospect it was probably a driver issue knowing how trash anything made by nvidia is, I'll close for now.

AlexandreRouma avatar Sep 30 '22 20:09 AlexandreRouma