Menu

#72 Service Wrapper Crash

open
Wrapper (39)
5
2007-09-19
2007-09-19
Anonymous
No

On Windows2003 SP2:
I've installed an application with service wrapper (of course, as automatic startup service).
I's seems works well.
But, after reboot, the application doesn't start.
Another bug: if I start the application from service management and log out from system, after re-login the application service crash.Window's events log tells me that the service "deads without information".
Service wrapper's log don't log anything about that.

The only thing to do is to tell windows "what operation to do if the service crash" (in service properties): Restart the service after one minute. Now works.

Any idea????

Discussion

  • Nobody/Anonymous

    Logged In: NO

    Ah! My e-mail!! agharta AT interfree DOT it

    Bye,

    Agharta

     
  • Nobody/Anonymous

    Logged In: NO

    About crash on log off, -Xrs should be added to JVM arguments on service startup.

     
  • Sylvain RIBEYRON

    Logged In: YES
    user_id=1905597
    Originator: NO

    Here is a patch for service crash on user logoff (excuse me for the big comment. I could not find any way to attach the patch as an attached file.):

    diff -aburN -x '*.number' -x '.cvs*' -x '*.win' -x '*.xml' -x '*.o' -x '*.PNG' -x '*.png' -x '*.gif' -x '*.xml' -x '*~' jsmooth-0.9.9-7-src/skeletons/commonjava/JVMBase.cpp jsmooth-0.9.9-7-src-svc/skeletons/commonjava/JVMBase.cpp
    --- jsmooth-0.9.9-7-src/skeletons/commonjava/JVMBase.cpp 2007-04-28 10:43:44.000000000 +0200
    +++ jsmooth-0.9.9-7-src-svc/skeletons/commonjava/JVMBase.cpp 2007-10-04 17:17:48.993192600 +0200
    @@ -24,6 +24,7 @@
    {

    m_maxHeap = -1;

    m_initialHeap = -1;

    + m_ignoreInterrupts = 0;

    }

    void JVMBase::addPathElement(const std::string& element)

    @@ -52,6 +53,11 @@
    m_arguments.push_back(arg);

    }

    +void JVMBase::setIgnoreInterrupts(int ignore)

    +{

    + DEBUG("m_ignoreInterrupts:<1>");

    + m_ignoreInterrupts = ignore;

    +}

    void JVMBase::setArguments(const std::string& args)

    {

    diff -aburN -x '*.number' -x '.cvs*' -x '*.win' -x '*.xml' -x '*.o' -x '*.PNG' -x '*.png' -x '*.gif' -x '*.xml' -x '*~' jsmooth-0.9.9-7-src/skeletons/commonjava/JVMBase.h jsmooth-0.9.9-7-src-svc/skeletons/commonjava/JVMBase.h
    --- jsmooth-0.9.9-7-src/skeletons/commonjava/JVMBase.h 2007-04-28 10:43:44.000000000 +0200
    +++ jsmooth-0.9.9-7-src-svc/skeletons/commonjava/JVMBase.h 2007-10-04 15:53:12.269481800 +0200
    @@ -42,6 +42,7 @@
    std::vector<JavaProperty> m_properties;

    int m_maxHeap;

    int m_initialHeap;

    + int m_ignoreInterrupts;

    std::vector<std::string> m_arguments;

    public:

    @@ -51,6 +52,7 @@
    void addProperty(const JavaProperty& prop);

    void setMaxHeap(long size);

    void setInitialHeap(long size);

    + void setIgnoreInterrupts(int ignore);

    void addArgument(const std::string& arg);

    void setArguments(const std::string& args);

    };

    diff -aburN -x '*.number' -x '.cvs*' -x '*.win' -x '*.xml' -x '*.o' -x '*.PNG' -x '*.png' -x '*.gif' -x '*.xml' -x '*~' jsmooth-0.9.9-7-src/skeletons/commonjava/SunJVMDLL.cpp jsmooth-0.9.9-7-src-svc/skeletons/commonjava/SunJVMDLL.cpp
    --- jsmooth-0.9.9-7-src/skeletons/commonjava/SunJVMDLL.cpp 2007-05-18 23:34:00.000000000 +0200
    +++ jsmooth-0.9.9-7-src-svc/skeletons/commonjava/SunJVMDLL.cpp 2007-10-04 17:37:25.117050600 +0200
    @@ -24,6 +24,7 @@
    #include "JClassProxy.h"

    #include "JniSmooth.h"

    +

    SunJVMDLL::SunJVMDLL(const std::string& jvmdll, const Version& v)

    {

    m_dllpath = jvmdll;

    @@ -135,6 +136,11 @@
    jpropstrv.push_back("-Xms" + StringUtils::toString(m_initialHeap));

    }

    + if (m_ignoreInterrupts > 0)

    + {

    + jpropstrv.push_back("-Xrs");

    + }

    +

    JavaVMInitArgs vm_args;

    GetDefaultJavaVMInitArgs(&vm_args);

    diff -aburN -x '*.number' -x '.cvs*' -x '*.win' -x '*.xml' -x '*.o' -x '*.PNG' -x '*.png' -x '*.gif' -x '*.xml' -x '*~' jsmooth-0.9.9-7-src/skeletons/commonjava/SunJVMExe.cpp jsmooth-0.9.9-7-src-svc/skeletons/commonjava/SunJVMExe.cpp
    --- jsmooth-0.9.9-7-src/skeletons/commonjava/SunJVMExe.cpp 2007-05-01 21:40:16.000000000 +0200
    +++ jsmooth-0.9.9-7-src-svc/skeletons/commonjava/SunJVMExe.cpp 2007-10-04 15:51:38.423329400 +0200
    @@ -65,6 +65,10 @@
    else

    execv.push_back("-Xms" + StringUtils::toString(m_initialHeap));

    }

    + if (m_ignoreInterrupts > 0)

    + {

    + execv.push_back("-Xrs");

    + }

    for (int i=0; i<m_properties.size(); i++)

    execv.push_back( StringUtils::requoteForCommandLine("-D" + m_properties[i].getName()) + "=" + StringUtils::requoteForCommandLine(m_properties[i].getValue()));

    diff -aburN -x '*.number' -x '.cvs*' -x '*.win' -x '*.xml' -x '*.o' -x '*.PNG' -x '*.png' -x '*.gif' -x '*.xml' -x '*~' jsmooth-0.9.9-7-src/skeletons/commonjava/SunJVMLauncher.cpp jsmooth-0.9.9-7-src-svc/skeletons/commonjava/SunJVMLauncher.cpp
    --- jsmooth-0.9.9-7-src/skeletons/commonjava/SunJVMLauncher.cpp 2007-05-18 23:34:00.000000000 +0200
    +++ jsmooth-0.9.9-7-src-svc/skeletons/commonjava/SunJVMLauncher.cpp 2007-10-04 17:38:47.337905400 +0200
    @@ -181,6 +181,9 @@
    if (resource.getProperty("maxheap") != "")
    vm->setMaxHeap( StringUtils::parseInt(resource.getProperty("maxheap") ));

    + if (resource.getProperty("ignoreInterrupts") != "")

    + vm->setIgnoreInterrupts( StringUtils::parseInt(resource.getProperty("ignoreInterrupts") ));

    +
    if (resource.getProperty("initialheap") != "")
    vm->setInitialHeap( StringUtils::parseInt(resource.getProperty("initialheap") ));

    diff -aburN -x '*.number' -x '.cvs*' -x '*.win' -x '*.xml' -x '*.o' -x '*.PNG' -x '*.png' -x '*.gif' -x '*.xml' -x '*~' jsmooth-0.9.9-7-src/skeletons/winservice/WinService.cpp jsmooth-0.9.9-7-src-svc/skeletons/winservice/WinService.cpp
    --- jsmooth-0.9.9-7-src/skeletons/winservice/WinService.cpp 2007-05-20 00:55:50.000000000 +0200
    +++ jsmooth-0.9.9-7-src-svc/skeletons/winservice/WinService.cpp 2007-10-04 17:43:39.486009200 +0200
    @@ -276,6 +276,7 @@

    ResourceManager* globalResMan = new ResourceManager("JAVA", PROPID, JARID, JNISMOOTHID);

    + globalResMan->setProperty("ignoreInterrupts", "1");

    //

    // sets up the debug mode, if requested

    std::string dodebug = globalResMan->getProperty("skel_Debug");

     

Log in to post a comment.

MongoDB Logo MongoDB