Hi everybody! There's this issue we're having a hard time troubleshooting and I hope Windows and Pd experts can help figuring this out!
So, a user is having issues loading the [sfont~] object from ELSE in Pd on Windows, even though me and others cannot reproduce the error. When trying to create the object, he gets:
H:\JOE-W10\Documents\Pd\externals\else\sfont~.m_amd64: La procédure spécifiée est introuvable (*The specified procedure is not found*). (127) sfont~ ...couldn't create
An error window also pops up and says:
"*Entry point not found * *The DllMain procedure entry point is not found in the dynamic link library * *H:\JOE-W10\Documents\Pd\externals\libfluidsynth-3.w64.*"
I don't know what this error means and why me and others don't get this error!
Of course we did troubleshoot installation and everything but we still can't figure it out and I have ZERO experience with windows.
It is important to note that the user reports he can use PlugData which carries ELSE and the object works just fine. The similar [fluid~] object (equally based on FluidSynth like sfont~) also works when used in the PurrData installation, but the user is also having problems loading fuild~ in Vanilla.
A screenshot and further discussion is found here https://github.com/porres/pd-else/issues/1405#issuecomment-1368250330
Thanks Alex
AND HAPPY 2023!!!!
Hi Alex,
happy new year!
I have recently experienced the same issue! I am also using zexy and for some reason [sfont~] would only load if [sfont~] loaded /before /zexy. Here's a hacky solution:
[declare -lib else/sfont~ -lib zexy]
I think the reason for such problems is this:
Plugin A and plugin B both link dynamically to third-party library C.
A and B ship their own versions of C (C-a and C-b)
If A is loaded first, C-a is loaded into memory and B will try to use C-a.
If B is loaded first, C-b is loaded into memory and A will try to use C-b.
This is ok if C-a and C-b are compatible, but it leads to problems if they are not.
That's why /plugins /should be linked statically whenever possible, because they cannot know which modules have already been loaded. (The only big exception is when plugins are distributed via package managers, since the latter are responsible for managing dependencies.)
In this particular case, the problem is the following:
Both zexy and libfluidsynth link against libintl-8; zexy wants to import "libintl_gettext", libfluidsynth wants to import "DllMain". However, the libintl-8 version shipped with zexy does not export "DllMain", so libfluidsynth won't load.
If I replace zexy's libintl-8 with else's libintl-8, both objects load correctly, regardless of which is loaded first.
Actually, I don't really understand why libfluidsynth's libintl-8 exports "DllMain" in the first place and why libfluidsynth wants to import it... According to the output of Dependencies, it does not seem to call any other function (see attachment).
Christof
On 31.12.2022 21:14, Alexandre Torres Porres wrote:
Hi everybody! There's this issue we're having a hard time troubleshooting and I hope Windows and Pd experts can help figuring this out!
So, a user is having issues loading the [sfont~] object from ELSE in Pd on Windows, even though me and others cannot reproduce the error. When trying to create the object, he gets:
H:\JOE-W10\Documents\Pd\externals\else\sfont~.m_amd64: La procédure spécifiée est introuvable (/The specified procedure is not found/). (127) sfont~ ...couldn't create
An error window also pops up and says:
"_Entry point not found _ _The DllMain procedure entry point is not found in the dynamic link library _ _H:\JOE-W10\Documents\Pd\externals\libfluidsynth-3.w64._"
I don't know what this error means and why me and others don't get this error!
Of course we did troubleshoot installation and everything but we still can't figure it out and I have ZERO experience with windows.
It is important to note that the user reports he can use PlugData which carries ELSE and the object works just fine. The similar [fluid~] object (equally based on FluidSynth like sfont~) also works when used in the PurrData installation, but the user is also having problems loading fuild~ in Vanilla.
A screenshot and further discussion is found here https://github.com/porres/pd-else/issues/1405#issuecomment-1368250330
Thanks Alex
AND HAPPY 2023!!!!
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management ->https://lists.puredata.info/listinfo/pd-list
wow, thanks, I'm reporting back to the user to see if it's exactly this.
Now, this seems to be a problem just for windows, right? Loading zexy before sfont~ here on mac is ok
cheers
Em dom., 1 de jan. de 2023 às 07:18, Christof Ressi info@christofressi.com escreveu:
Hi Alex,
happy new year!
I have recently experienced the same issue! I am also using zexy and for some reason [sfont~] would only load if [sfont~] loaded *before *zexy. Here's a hacky solution:
[declare -lib else/sfont~ -lib zexy]
I think the reason for such problems is this:
Plugin A and plugin B both link dynamically to third-party library C.
A and B ship their own versions of C (C-a and C-b)
If A is loaded first, C-a is loaded into memory and B will try to use C-a.
If B is loaded first, C-b is loaded into memory and A will try to use C-b.
This is ok if C-a and C-b are compatible, but it leads to problems if they are not.
That's why *plugins *should be linked statically whenever possible, because they cannot know which modules have already been loaded. (The only big exception is when plugins are distributed via package managers, since the latter are responsible for managing dependencies.)
In this particular case, the problem is the following:
Both zexy and libfluidsynth link against libintl-8; zexy wants to import "libintl_gettext", libfluidsynth wants to import "DllMain". However, the libintl-8 version shipped with zexy does not export "DllMain", so libfluidsynth won't load.
If I replace zexy's libintl-8 with else's libintl-8, both objects load correctly, regardless of which is loaded first.
Actually, I don't really understand why libfluidsynth's libintl-8 exports "DllMain" in the first place and why libfluidsynth wants to import it... According to the output of Dependencies, it does not seem to call any other function (see attachment).
Christof On 31.12.2022 21:14, Alexandre Torres Porres wrote:
Hi everybody! There's this issue we're having a hard time troubleshooting and I hope Windows and Pd experts can help figuring this out!
So, a user is having issues loading the [sfont~] object from ELSE in Pd on Windows, even though me and others cannot reproduce the error. When trying to create the object, he gets:
H:\JOE-W10\Documents\Pd\externals\else\sfont~.m_amd64: La procédure spécifiée est introuvable (*The specified procedure is not found*). (127) sfont~ ...couldn't create
An error window also pops up and says:
"*Entry point not found * *The DllMain procedure entry point is not found in the dynamic link library * *H:\JOE-W10\Documents\Pd\externals\libfluidsynth-3.w64.*"
I don't know what this error means and why me and others don't get this error!
Of course we did troubleshoot installation and everything but we still can't figure it out and I have ZERO experience with windows.
It is important to note that the user reports he can use PlugData which carries ELSE and the object works just fine. The similar [fluid~] object (equally based on FluidSynth like sfont~) also works when used in the PurrData installation, but the user is also having problems loading fuild~ in Vanilla.
A screenshot and further discussion is found here https://github.com/porres/pd-else/issues/1405#issuecomment-1368250330
Thanks Alex
AND HAPPY 2023!!!!
_______________________________________________Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
hey, thanks, I can confirm that this was the issue for the user ;) so it's solved for now
Em dom., 1 de jan. de 2023 às 18:50, Alexandre Torres Porres < porres@gmail.com> escreveu:
wow, thanks, I'm reporting back to the user to see if it's exactly this.
Now, this seems to be a problem just for windows, right? Loading zexy before sfont~ here on mac is ok
cheers
Em dom., 1 de jan. de 2023 às 07:18, Christof Ressi < info@christofressi.com> escreveu:
Hi Alex,
happy new year!
I have recently experienced the same issue! I am also using zexy and for some reason [sfont~] would only load if [sfont~] loaded *before *zexy. Here's a hacky solution:
[declare -lib else/sfont~ -lib zexy]
I think the reason for such problems is this:
Plugin A and plugin B both link dynamically to third-party library C.
A and B ship their own versions of C (C-a and C-b)
If A is loaded first, C-a is loaded into memory and B will try to use C-a.
If B is loaded first, C-b is loaded into memory and A will try to use C-b.
This is ok if C-a and C-b are compatible, but it leads to problems if they are not.
That's why *plugins *should be linked statically whenever possible, because they cannot know which modules have already been loaded. (The only big exception is when plugins are distributed via package managers, since the latter are responsible for managing dependencies.)
In this particular case, the problem is the following:
Both zexy and libfluidsynth link against libintl-8; zexy wants to import "libintl_gettext", libfluidsynth wants to import "DllMain". However, the libintl-8 version shipped with zexy does not export "DllMain", so libfluidsynth won't load.
If I replace zexy's libintl-8 with else's libintl-8, both objects load correctly, regardless of which is loaded first.
Actually, I don't really understand why libfluidsynth's libintl-8 exports "DllMain" in the first place and why libfluidsynth wants to import it... According to the output of Dependencies, it does not seem to call any other function (see attachment).
Christof On 31.12.2022 21:14, Alexandre Torres Porres wrote:
Hi everybody! There's this issue we're having a hard time troubleshooting and I hope Windows and Pd experts can help figuring this out!
So, a user is having issues loading the [sfont~] object from ELSE in Pd on Windows, even though me and others cannot reproduce the error. When trying to create the object, he gets:
H:\JOE-W10\Documents\Pd\externals\else\sfont~.m_amd64: La procédure spécifiée est introuvable (*The specified procedure is not found*). (127) sfont~ ...couldn't create
An error window also pops up and says:
"*Entry point not found * *The DllMain procedure entry point is not found in the dynamic link library * *H:\JOE-W10\Documents\Pd\externals\libfluidsynth-3.w64.*"
I don't know what this error means and why me and others don't get this error!
Of course we did troubleshoot installation and everything but we still can't figure it out and I have ZERO experience with windows.
It is important to note that the user reports he can use PlugData which carries ELSE and the object works just fine. The similar [fluid~] object (equally based on FluidSynth like sfont~) also works when used in the PurrData installation, but the user is also having problems loading fuild~ in Vanilla.
A screenshot and further discussion is found here https://github.com/porres/pd-else/issues/1405#issuecomment-1368250330
Thanks Alex
AND HAPPY 2023!!!!
_______________________________________________Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list