I have this Java codes
public int bass_openstreampush(int freq,int channels, int flags) {
if (Buffer1==null) Buffer1 = ByteBuffer.allocate(config_buffer);
Buffer1.clear();
bass_stopcurrentplayback();
current_play_handle = bass.BASS_StreamCreate(freq, channels, flags, bassconstant.STREAMPROC_PUSH, null);
BA.Log("BASS_StreamCreate STREAMPROC_PUSH handle="+current_play_handle);
if (current_play_handle!=0) {
if (bass.BASS_ChannelPlay(current_play_handle, true)) {
DSP_for_playbackvu("OpenStreamPush", PLAYER_ID, current_play_handle);
raise_streamstart(PLAYER_ID);
} else {
raise_errorhappened(PLAYER_ID,"OpenStreamPush::ChannelPlay");
raise_streamstop(PLAYER_ID);
}
} else {
raise_errorhappened(PLAYER_ID,"OpenStreamPush::StreamCreate");
raise_streamstop(PLAYER_ID);
}
return current_play_handle;
}
On Linux ARM (raspberry pi), above codes executes normally.
Above codes also being used in an application in Windows, that previously ran normally.
We need to add some function today, and immediately found these errors :
Waiting for debugger to connect...
Program started.
User Directory : C:\Code\QZA\QZAGUI~2\Objects
Data Directory : C:\Users\admin\AppData\Roaming\QZACLIENT
OS Name : Windows 10
OS Architecture : amd64
OS Version : 10.0
JVM Name : Java HotSpot(TM) 64-Bit Server VM
Java Lib path : C:\Program Files\Java\jdk1.8.0_251\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\MySQL\MySQL Utilities 1.3.6\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files\Oracle\VirtualBox;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\dotnet\;C:\Users\admin\AppData\Local\Microsoft\WindowsApps;C:\Users\admin\AppData\Local\Programs\Microsoft VS...
Path Separator : [;]
Run Directory : C:\Code\QZA\QZAGUI~2\Objects
User Home : C:\Users\admin
User Directory : C:\Code\QZA\QZAGUI~2\Objects
JNA Library Path : null
Windows 64bit
Extract Library parameter
NativePath=/win64/
Library Name=bass.dll
Target=C:\Code\QZA\QZAGUI~2\Objects
Copied bass.dll to C:\Code\QZA\QZAGUI~2\Objects
Extract_Library result=C:\Code\QZA\QZAGUI~2\Objects\bass.dll
New value for jna.library.path to C:\Code\QZA\QZAGUI~2\Objects
Extract Library parameter
NativePath=/win64/
Library Name=bass_fx.dll
Target=C:\Code\QZA\QZAGUI~2\Objects
Copied bass_fx.dll to C:\Code\QZA\QZAGUI~2\Objects
Extract_Library result=C:\Code\QZA\QZAGUI~2\Objects\bass_fx.dll
Extract Library parameter
NativePath=/win64/
Library Name=bassmix.dll
Target=C:\Code\QZA\QZAGUI~2\Objects
Copied bassmix.dll to C:\Code\QZA\QZAGUI~2\Objects
Extract_Library result=C:\Code\QZA\QZAGUI~2\Objects\bassmix.dll
Extract Library parameter
NativePath=/win64/
Library Name=bassenc.dll
Target=C:\Code\QZA\QZAGUI~2\Objects
Copied bassenc.dll to C:\Code\QZA\QZAGUI~2\Objects
Extract_Library result=C:\Code\QZA\QZAGUI~2\Objects\bassenc.dll
Extract Library parameter
NativePath=/win64/
Library Name=bassenc_mp3.dll
Target=C:\Code\QZA\QZAGUI~2\Objects
Copied bassenc_mp3.dll to C:\Code\QZA\QZAGUI~2\Objects
Extract_Library result=C:\Code\QZA\QZAGUI~2\Objects\bassenc_mp3.dll
BASS version=2041007
BASS_FX version=2040c06
BASSENC version=2041001
BASSMIX version=2040c00
BASSENC MP3 version=2040104
Refresh Audio Input Microphone Array (Intel� Smart Sound Technology (Intel� SST))
Refresh Audio Input Speakers (Realtek(R) Audio)
Refresh Audio Output No sound
Refresh Audio Output Default
Refresh Audio Output Speakers (Realtek(R) Audio)
BASS_StreamCreate STREAMPROC_PUSH handle=-2147483647
java.lang.Error: Invalid memory access
at com.un4seen.bass.BASS.BASS_ChannelPlay(Native Method)
at jbass.JBass.bass_openstreampush(JBass.java:1714)
at gtc.qzaclient.audioclass._reopen_soundcard(audioclass.java:595)
at gtc.qzaclient.audioclass._initialize(audioclass.java:72)
at gtc.qzaclient.main._appstart(main.java:504)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:632)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:237)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:91)
at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:98)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:78)
at gtc.qzaclient.main.start(main.java:38)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$4(WinApplication.java:186)
at java.lang.Thread.run(Thread.java:748)
java.lang.RuntimeException: java.lang.Error: Invalid memory access
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:120)
at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:98)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:78)
at gtc.qzaclient.main.start(main.java:38)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$4(WinApplication.java:186)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.Error: Invalid memory access
at com.un4seen.bass.BASS.BASS_ChannelPlay(Native Method)
at jbass.JBass.bass_openstreampush(JBass.java:1714)
at gtc.qzaclient.audioclass._reopen_soundcard(audioclass.java:595)
at gtc.qzaclient.audioclass._initialize(audioclass.java:72)
at gtc.qzaclient.main._appstart(main.java:504)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:632)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:237)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:91)
... 12 more
We got ChannelPlay invalid memory access .
DLL already loaded properly, because other functions such as :
* BASS_GetVersion return version
* BASS_GetDeviceInfo can get soundcard info
* StreamCreate can create handle
Above happened using bass.dll dated :
* 08/09/2021 , size 252 KB
* 12/10/2022, size 157 KB
Unfortunately I dont keep older DLL to compare.