vibe.d - cannot allocate memory in static TLS block
John Colvin via Digitalmars-d
digitalmars-d at puremagic.com
Thu Aug 27 08:16:23 PDT 2015
On Thursday, 27 August 2015 at 13:08:18 UTC, ddos wrote:
> On Thursday, 27 August 2015 at 11:34:36 UTC, John Colvin wrote:
>> P.S. this would be better asked in
>> http://forum.dlang.org/group/learn or
>> http://forum.rejectedsoftware.com
>
> made a thread before on the vibe forum too, see here
> http://forum.rejectedsoftware.com/groups/rejectedsoftware.vibed/thread/26343/
>
> On Thursday, 27 August 2015 at 11:34:36 UTC, John Colvin wrote:
>> Firstly, try with up-to-date vibe.d and zmqd.
>> What happens if you remove some of those dependencies? If you
>> remove targetType dynamicLibrary? Is it just vibe.d on it's
>> own that is causing the problem, or is it a combination?
>
> thx for the input, i've pulled out a smaller testing example
> from my codebase using only vibe as a dependency. if i compile
> this code as executable everything works as expected. Compiling
> it as a dynamicLibrary fails when the library is loaded.
>
> if this is of any help, that is the program the shared library
> is loaded into
> https://github.com/IceNinjaman/CoD4X17a_testing/
> the used compile script:
> https://github.com/IceNinjaman/CoD4X17a_testing/blob/master/build_cod4x17a_elf_nopunkbuster.sh
>
> {
> "name": "vibefailtest",
> "description": "A minimal D application.",
> "copyright": "Copyright © 2015, vagrant",
> "authors": ["vagrant"],
> "targetType": "dynamicLibrary",
> "dependencies": {
> "vibe-d": "~>0.7.25-alpha.1",
> },
> "versions": ["VibeCustomMain"]
> }
>
> import std.stdio;
> import vibe.d;
>
> struct version_t
> {
> int major;
> int minor;
> }
>
> align(1) struct pluginInfo_t{ // To be used in
> OnInfoRequest
> align(1):
> version_t handlerVersion; // Requested plugin handler
> version - mandatory field
> version_t pluginVersion; // Version of your plugin -
> optional
> char[64] fullName; // Full plugin name, short name
> is the filename without extension - optional
> char[128] shortDescription; // Describe in a few words what
> this plugin does - optional
> char[1024] longDescription; // Full description - optional
> }
>
> extern (C) void OnInfoRequest(pluginInfo_t *info)
> {
> info.handlerVersion = version_t(2, 302);
> info.pluginVersion = version_t(0, 1);
> }
>
> extern (C) int OnInit()
> {
> printf(">>>>>>>> init\n");
> return 0;
> }
>
> void main(){
> OnInit();
> }
I think your problem is that you need to initialise the D
runtime. Perhaps adding a call to
http://dlang.org/phobos/core_runtime.html#.Runtime.initialize
inside OnInit will solve it for you. Also, remember to terminate
the runtime when the plugin is unloaded.
More information about the Digitalmars-d
mailing list