Properly notify gpgme about spawn executable location on Windows

Kaganski Mike mikekaganski at hotmail.com
Sun Apr 21 06:16:18 UTC 2019


Hi Thorsten,

Thanks for your analysis!

On 21.04.2019 0:22, Thorsten Behrens wrote:
> Kaganski Mike wrote:
>> However, I suppose that it's possible in theory that some user python
>> script could ultimately need initializing gpgme. In that case, the
>> problem would hit the user. Having a modal dialog waiting on a possibly
>> headless server is not a correct behavior :-)
>>
> Hmm - so the uitests are rigging the office in a very specific way,
> using subprocess.Popen to spawn a child soffice process from python
> (which calls CreateProcess on Windows). Code for that is in
> uitest/libreoffice/connection.py, Python3 help blurb is
> 
>   https://docs.python.org/3/library/subprocess.html#subprocess.Popen
> 
> It is a tad surprising that this would somehow 'think' it is still the
> main python executable on Windows, perhaps there's a way to
> parameterize the Popen call differently to rectify that?

I am quite sure that's python.exe process that I debug in VS here (path: 
C:\lo\src\core\instdir\program\python-core-3.5.5\bin\python.exe, 
launched by python.exe in C:\lo\src\core\instdir\program); with a 
command line like this:

> "C:\lo\src\core\instdir\program\\python-core-3.5.5" "-m" "unittest" "insertremovecells"

... and a call stack like this:

> xsec_xmlsec.dll!SecurityEnvironmentGpg::{ctor}::__l2::<lambda>() Line 49
> 	at c:\lo\src\core\xmlsecurity\source\gpg\securityenvironment.cxx(49)
> xsec_xmlsec.dll!SecurityEnvironmentGpg::SecurityEnvironmentGpg() Line 66
> 	at c:\lo\src\core\xmlsecurity\source\gpg\securityenvironment.cxx(66)
> xsec_xmlsec.dll!SEInitializerGpg::createSecurityContext(const rtl::OUString & __formal) Line 45
> 	at c:\lo\src\core\xmlsecurity\source\gpg\seinitializer.cxx(45)
> xmlsecurity.dll!DocumentSignatureManager::init() Line 80
> 	at c:\lo\src\core\xmlsecurity\source\helper\documentsignaturemanager.cxx(80)
> xmlsecurity.dll!DocumentDigitalSignatures::ImplVerifySignatures(const com::sun::star::uno::Reference<com::sun::star::embed::XStorage> & rxStorage, const com::sun::star::uno::Reference<com::sun::star::io::XInputStream> & xSignStream, DocumentSignatureMode eMode) Line 313
> 	at c:\lo\src\core\xmlsecurity\source\component\documentdigitalsignatures.cxx(313)
> xmlsecurity.dll!DocumentDigitalSignatures::verifyDocumentContentSignatures(const com::sun::star::uno::Reference<com::sun::star::embed::XStorage> & rxStorage, const com::sun::star::uno::Reference<com::sun::star::io::XInputStream> & xSignInStream) Line 176
> 	at c:\lo\src\core\xmlsecurity\source\component\documentdigitalsignatures.cxx(176)
> sfxlo.dll!SfxObjectShell::ImplAnalyzeSignature(bool bScriptingContent, const com::sun::star::uno::Reference<com::sun::star::security::XDocumentDigitalSignatures> & xSigner) Line 1538
> 	at c:\lo\src\core\sfx2\source\doc\objserv.cxx(1538)
> sfxlo.dll!SfxObjectShell::ImplGetSignatureState(bool bScriptingContent) Line 1567
> 	at c:\lo\src\core\sfx2\source\doc\objserv.cxx(1567)
> sfxlo.dll!SfxObjectShell::GetDocumentSignatureState() Line 1718
> 	at c:\lo\src\core\sfx2\source\doc\objserv.cxx(1718)
> sfxlo.dll!SfxObjectShell::CheckForBrokenDocSignatures_Impl() Line 981
> 	at c:\lo\src\core\sfx2\source\doc\objmisc.cxx(981)
> sfxlo.dll!SfxObjectShell::CheckSecurityOnLoading_Impl() Line 933
> 	at c:\lo\src\core\sfx2\source\doc\objmisc.cxx(933)
> sfxlo.dll!SfxObjectShell::FinishedLoading(SfxLoadedFlags nFlags) Line 1081
> 	at c:\lo\src\core\sfx2\source\doc\objmisc.cxx(1081)
> sclo.dll!ScDocShell::Load(SfxMedium & rMedium) Line 658
> 	at c:\lo\src\core\sc\source\ui\docshell\docsh.cxx(658)
> sfxlo.dll!SfxObjectShell::LoadOwnFormat(SfxMedium & rMedium) Line 3041
> 	at c:\lo\src\core\sfx2\source\doc\objstor.cxx(3041)
> sfxlo.dll!SfxObjectShell::DoLoad(SfxMedium * pMed) Line 723
> 	at c:\lo\src\core\sfx2\source\doc\objstor.cxx(723)
> sfxlo.dll!SfxBaseModel::load(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & seqArguments) Line 1795
> 	at c:\lo\src\core\sfx2\source\doc\sfxbasemodel.cxx(1795)
> sfxlo.dll!`anonymous namespace'::SfxFrameLoader_Impl::load(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & rArgs, const com::sun::star::uno::Reference<com::sun::star::frame::XFrame> & _rTargetFrame) Line 693
> 	at c:\lo\src\core\sfx2\source\view\frmload.cxx(693)
> fwklo.dll!framework::LoadEnv::impl_loadContent() Line 1141
> 	at c:\lo\src\core\framework\source\loadenv\loadenv.cxx(1141)
> fwklo.dll!framework::LoadEnv::startLoading() Line 375
> 	at c:\lo\src\core\framework\source\loadenv\loadenv.cxx(375)
> fwklo.dll!framework::LoadEnv::loadComponentFromURL(const com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> & xLoader, const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> & xContext, const rtl::OUString & sURL, const rtl::OUString & sTarget, long nFlags, const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & lArgs) Line 162
> 	at c:\lo\src\core\framework\source\loadenv\loadenv.cxx(162)
> fwklo.dll!framework::Desktop::loadComponentFromURL(const rtl::OUString & sURL, const rtl::OUString & sTargetFrameName, long nSearchFlags, const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & lArguments) Line 618
> 	at c:\lo\src\core\framework\source\services\desktop.cxx(618)
> mscx_uno.dll!`anonymous namespace'::cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy * pThis, bridges::cpp_uno::shared::VtableSlot aVtableSlot, _typelib_TypeDescriptionReference * pReturnTypeRef, long nParams, _typelib_MethodParameter * pParams, void * pUnoReturn, void * * pUnoArgs, _uno_Any * * ppUnoExc) Line 214
> 	at c:\lo\src\core\bridges\source\cpp_uno\msvc_win32_x86-64\uno2cpp.cxx(214)
> mscx_uno.dll!bridges::cpp_uno::shared::unoInterfaceProxyDispatch(_uno_Interface * pUnoI, const _typelib_TypeDescription * pMemberTD, void * pReturn, void * * pArgs, _uno_Any * * ppException) Line 429
> 	at c:\lo\src\core\bridges\source\cpp_uno\msvc_win32_x86-64\uno2cpp.cxx(429)
> reflectionlo.dll!stoc_corefl::IdlInterfaceMethodImpl::invoke(const com::sun::star::uno::Any & rObj, com::sun::star::uno::Sequence<com::sun::star::uno::Any> & rArgs) Line 699
> 	at c:\lo\src\core\stoc\source\corereflection\criface.cxx(699)
> invocationlo.dll!stoc_inv::Invocation_Impl::invoke(const rtl::OUString & FunctionName, const com::sun::star::uno::Sequence<com::sun::star::uno::Any> & InParams, com::sun::star::uno::Sequence<short> & OutIndices, com::sun::star::uno::Sequence<com::sun::star::uno::Any> & OutParams) Line 681
> 	at c:\lo\src\core\stoc\source\invocation\invocation.cxx(681)
> pyuno_d.pyd!pyuno::PyUNO_callable_call(_object * self, _object * args, _object * __formal) Line 96
> 	at c:\lo\src\core\pyuno\source\module\pyuno_callable.cxx(96)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!do_call(_object * func, _object * * * pp_stack, int na, int nk) Line 4991
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4991)
> python35_d.dll!call_function(_object * * * pp_stack, int oparg) Line 4787
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4787)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3291
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3291)
> python35_d.dll!fast_function(_object * func, _object * * * pp_stack, int n, int na, int nk) Line 4857
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4857)
> python35_d.dll!call_function(_object * * * pp_stack, int oparg) Line 4783
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4783)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3291
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3291)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!PyEval_EvalCodeEx(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure) Line 4096
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4096)
> python35_d.dll!function_call(_object * func, _object * arg, _object * kw) Line 627
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\funcobject.c(627)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!ext_do_call(_object * func, _object * * * pp_stack, int flags, int na, int nk) Line 5089
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(5089)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3331
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3331)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!PyEval_EvalCodeEx(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure) Line 4096
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4096)
> python35_d.dll!function_call(_object * func, _object * arg, _object * kw) Line 627
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\funcobject.c(627)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!method_call(_object * func, _object * arg, _object * kw) Line 330
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\classobject.c(330)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!slot_tp_call(_object * self, _object * args, _object * kwds) Line 6099
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\typeobject.c(6099)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!do_call(_object * func, _object * * * pp_stack, int na, int nk) Line 4991
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4991)
> python35_d.dll!call_function(_object * * * pp_stack, int oparg) Line 4787
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4787)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3291
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3291)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!PyEval_EvalCodeEx(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure) Line 4096
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4096)
> python35_d.dll!function_call(_object * func, _object * arg, _object * kw) Line 627
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\funcobject.c(627)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!ext_do_call(_object * func, _object * * * pp_stack, int flags, int na, int nk) Line 5089
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(5089)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3331
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3331)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!PyEval_EvalCodeEx(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure) Line 4096
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4096)
> python35_d.dll!function_call(_object * func, _object * arg, _object * kw) Line 627
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\funcobject.c(627)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!method_call(_object * func, _object * arg, _object * kw) Line 330
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\classobject.c(330)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!slot_tp_call(_object * self, _object * args, _object * kwds) Line 6099
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\typeobject.c(6099)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!do_call(_object * func, _object * * * pp_stack, int na, int nk) Line 4991
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4991)
> python35_d.dll!call_function(_object * * * pp_stack, int oparg) Line 4787
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4787)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3291
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3291)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!PyEval_EvalCodeEx(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure) Line 4096
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4096)
> python35_d.dll!function_call(_object * func, _object * arg, _object * kw) Line 627
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\funcobject.c(627)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!ext_do_call(_object * func, _object * * * pp_stack, int flags, int na, int nk) Line 5089
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(5089)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3331
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3331)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!PyEval_EvalCodeEx(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure) Line 4096
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4096)
> python35_d.dll!function_call(_object * func, _object * arg, _object * kw) Line 627
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\funcobject.c(627)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!method_call(_object * func, _object * arg, _object * kw) Line 330
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\classobject.c(330)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!slot_tp_call(_object * self, _object * args, _object * kwds) Line 6099
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\typeobject.c(6099)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!do_call(_object * func, _object * * * pp_stack, int na, int nk) Line 4991
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4991)
> python35_d.dll!call_function(_object * * * pp_stack, int oparg) Line 4787
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4787)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3291
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3291)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!PyEval_EvalCodeEx(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure) Line 4096
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4096)
> python35_d.dll!function_call(_object * func, _object * arg, _object * kw) Line 627
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\funcobject.c(627)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!ext_do_call(_object * func, _object * * * pp_stack, int flags, int na, int nk) Line 5089
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(5089)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3331
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3331)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!PyEval_EvalCodeEx(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure) Line 4096
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4096)
> python35_d.dll!function_call(_object * func, _object * arg, _object * kw) Line 627
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\funcobject.c(627)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!method_call(_object * func, _object * arg, _object * kw) Line 330
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\classobject.c(330)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!slot_tp_call(_object * self, _object * args, _object * kwds) Line 6099
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\typeobject.c(6099)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!do_call(_object * func, _object * * * pp_stack, int na, int nk) Line 4991
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4991)
> python35_d.dll!call_function(_object * * * pp_stack, int oparg) Line 4787
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4787)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3291
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3291)
> python35_d.dll!fast_function(_object * func, _object * * * pp_stack, int n, int na, int nk) Line 4857
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4857)
> python35_d.dll!call_function(_object * * * pp_stack, int oparg) Line 4783
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4783)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3291
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3291)
> python35_d.dll!fast_function(_object * func, _object * * * pp_stack, int n, int na, int nk) Line 4857
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4857)
> python35_d.dll!call_function(_object * * * pp_stack, int oparg) Line 4783
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4783)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3291
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3291)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!PyEval_EvalCodeEx(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure) Line 4096
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4096)
> python35_d.dll!function_call(_object * func, _object * arg, _object * kw) Line 627
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\funcobject.c(627)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!method_call(_object * func, _object * arg, _object * kw) Line 330
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\classobject.c(330)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!slot_tp_init(_object * self, _object * args, _object * kwds) Line 6314
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\typeobject.c(6314)
> python35_d.dll!type_call(_typeobject * type, _object * args, _object * kwds) Line 905
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\typeobject.c(905)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!do_call(_object * func, _object * * * pp_stack, int na, int nk) Line 4991
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4991)
> python35_d.dll!call_function(_object * * * pp_stack, int oparg) Line 4787
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4787)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3291
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3291)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!PyEval_EvalCodeEx(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure) Line 4096
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4096)
> python35_d.dll!PyEval_EvalCode(_object * co, _object * globals, _object * locals) Line 783
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(783)
> python35_d.dll!builtin_exec_impl(_object * module, _object * source, _object * globals, _object * locals) Line 956
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\bltinmodule.c(956)
> python35_d.dll!builtin_exec(_object * module, _object * args) Line 274
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\clinic\bltinmodule.c.h(274)
> python35_d.dll!PyCFunction_Call(_object * func, _object * args, _object * kwds) Line 109
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\methodobject.c(109)
> python35_d.dll!call_function(_object * * * pp_stack, int oparg) Line 4758
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4758)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3291
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3291)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!fast_function(_object * func, _object * * * pp_stack, int n, int na, int nk) Line 4871
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4871)
> python35_d.dll!call_function(_object * * * pp_stack, int oparg) Line 4783
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4783)
> python35_d.dll!PyEval_EvalFrameEx(_frame * f, int throwflag) Line 3291
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(3291)
> python35_d.dll!_PyEval_EvalCodeWithName(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure, _object * name, _object * qualname) Line 4071
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4071)
> python35_d.dll!PyEval_EvalCodeEx(_object * _co, _object * globals, _object * locals, _object * * args, int argcount, _object * * kws, int kwcount, _object * * defs, int defcount, _object * kwdefs, _object * closure) Line 4096
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\python\ceval.c(4096)
> python35_d.dll!function_call(_object * func, _object * arg, _object * kw) Line 627
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\funcobject.c(627)
> python35_d.dll!PyObject_Call(_object * func, _object * arg, _object * kw) Line 2166
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\objects\abstract.c(2166)
> python35_d.dll!RunModule(wchar_t * modname, int set_argv0) Line 208
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\modules\main.c(208)
> python35_d.dll!Py_Main(int argc, wchar_t * * argv) Line 735
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\modules\main.c(735)
> python.exe!wmain(int argc, wchar_t * * argv) Line 15
> 	at c:\lo\src\core\workdir\unpackedtarball\python3\programs\python.c(15)
> python.exe!invoke_main() Line 91
> 	at d:\agent\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl(91)
> python.exe!__scrt_common_main_seh() Line 288
> 	at d:\agent\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl(288)
> python.exe!__scrt_common_main() Line 331
> 	at d:\agent\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl(331)
> python.exe!wmainCRTStartup() Line 17
> 	at d:\agent\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_wmain.cpp(17)
> kernel32.dll!BaseThreadInitThunk
()
> ntdll.dll!RtlUserThreadStart
()

- so I don't think that it's soffice.bin somehow "thinking" it's python.

>> 1. First of all - do I understand it correctly that the problem is real
>> - so there are possible scenarios involving e.g. python (or another
>> process which executable is not in LO's instdir/program), that might
>> need gpgme?
>>
> See above - but even for uitests, the issue might become relevant, so
> I see at least no harm in keeping that fix (unless Popen can be fixed
> to not have Windows inherit too much parent process attributes).

Ok - so then I'll merge it.

>> 2. To find the executable, I use UNO_PATH envvar. As far as I can tell,
>> even directly running soffice.bin without having UNO_PATH set in
>> environment, sets the variable correctly, so this works as expected. But
>> is there a better way?
>>
> The canonical way seems to be something like:
> 
>      OUString aProgramURL("$BRAND_BASE_DIR/" LIBO_LIBEXEC_FOLDER "/<executable>");
>      rtl::Bootstrap::expandMacros(aProgramURL);

Thanks! Done.

>> 3. The patch needs to add a gpgmepp wrapper for gpgme_set_global_flag
>> function,
>> [snip]
>> If there's no way to do that, then I'll create a pr to
>> https://github.com/KDE/gpgmepp.
>>
> Yes please, that's how we did that in the past, too.

Will do - waiting for account confirmation.

-- 
Best regards,
Mike Kaganski


More information about the LibreOffice mailing list