Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

node binary core dumps #209

Closed
sharmadeepak29 opened this issue Mar 26, 2020 · 13 comments
Closed

node binary core dumps #209

sharmadeepak29 opened this issue Mar 26, 2020 · 13 comments

Comments

@sharmadeepak29
Copy link

I am using the recipe for cross-compilation of node and its packages for target CPU ppc64 linux.
But when the load is installed on the machine node binary core dumps with illegal instruction signal. I have absolutely no idea what's happening here. Someone pls help

/usr/bin/node app.js
Illegal instruction (core dumped)

@kraj
Copy link
Contributor

kraj commented Mar 27, 2020

can you run it under gdb and check stack trace ?

@sharmadeepak29
Copy link
Author

I have also tested the node with following as mentioned in the documentation.
./node -e "console.log('Hello from Node.js ' + process.version)"
Hello from Node.js v10.15.3

Here is the GDB backtrace after this step it crashes I feel it is something related to Environment.

Thread 1 "node" hit Breakpoint 6, node::LoadEnvironment (env=env@entry=0x3fffffffedc0) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node.cc:3086
3086 in /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node.cc
(gdb) bt
#0 node::LoadEnvironment (env=env@entry=0x3fffffffedc0) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node.cc:3086
#1 0x00000000102e46a8 in node::Start (exec_argv=0x1127e200, exec_argc=1, argv=, argc=, isolate_data=0x3fffffffe6b0, isolate=0x11284ab0)
at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node.cc:4108
#2 node::Start (event_loop=, argc=, argv=, exec_argc=, exec_argv=0x1127e200) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node.cc:4193
#3 0x00000000102e33f4 in node::Start (argc=, argv=0x1127e120) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node.cc:4250
#4 0x000000001029a958 in main (argc=, argv=0x3ffffffffbb8) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node_main.cc:124
(gdb) c
Continuing.

Thread 1 "node" hit Breakpoint 7, v8::Function::Call (this=0x112de7a8, context=..., recv=..., argc=2, argv=0x3fffffffe500) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/deps/v8/src/api.cc:5393
5393 /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/deps/v8/src/api.cc: No such file or directory.
(gdb) bt
#0 v8::Function::Call (this=0x112de7a8, context=..., recv=..., argc=2, argv=0x3fffffffe500) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/deps/v8/src/api.cc:5393
#1 0x00000000102e0aec in node::LoadEnvironment (env=env@entry=0x3fffffffedc0) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node.cc:3086
#2 0x00000000102e46a8 in node::Start (exec_argv=0x1127e200, exec_argc=1, argv=, argc=, isolate_data=0x3fffffffe6b0, isolate=0x11284ab0)
at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node.cc:4108
#3 node::Start (event_loop=, argc=, argv=, exec_argc=, exec_argv=0x1127e200) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node.cc:4193
#4 0x00000000102e33f4 in node::Start (argc=, argv=0x1127e120) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node.cc:4250
#5 0x000000001029a958 in main (argc=, argv=0x3ffffffffbb8) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/src/node_main.cc:124
(gdb) c
Continuing.

Thread 1 "node" hit Breakpoint 10, v8::internal::Runtime_PromiseHookInit (args_length=2, args_object=0x3fffffffd188, isolate=0x11284ab0)
at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/deps/v8/src/runtime/runtime-promise.cc:132
132 /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/deps/v8/src/runtime/runtime-promise.cc: No such file or directory.
(gdb) bt
#0 v8::internal::Runtime_PromiseHookInit (args_length=2, args_object=0x3fffffffd188, isolate=0x11284ab0) at /usr/src/debug/nodejs/8.17.0-r0/node-v8.17.0/deps/v8/src/runtime/runtime-promise.cc:132
#1 0x000003c7b3f04134 in ?? ()
(gdb) c
Continuing.

@kraj
Copy link
Contributor

kraj commented Mar 28, 2020

node8 is pretty old, can you try to reproduce this with node from master branch of meta-openembedded

@sharmadeepak29
Copy link
Author

Thanks KhemRaj for the response.
I have tried running Node 10.15.3 and seen the same dump. I have not attached gdb to it till yet but I feel since it is also core dumping it might have a similar stack trace. Let me know if stack trace is needed for 10.15.3. Also, I cannot go beyond this version as are toolchain is a bit old.

@kraj
Copy link
Contributor

kraj commented Mar 29, 2020

I do not have a ppc64 machine to actively reproduce the problem, so if you can provide as much information as possible we might be able to get to bottom of this issue.

@sharmadeepak29
Copy link
Author

sharmadeepak29 commented Mar 30, 2020

Sure. I will Share the stack trace of Node10.15.3 by today Hope that helps. Let me know if you need any other information. However, I won't be able to use the master branch of meta-openembedded.

@sharmadeepak29
Copy link
Author

sharmadeepak29 commented Mar 30, 2020

Please find below Valgrind stack trace for Node version 10.15.3. Hope it helps

Fatal error in , line 0

external code buffer is too small

#FailureMessage Object: 0x1ffefff190==15405==
==15405== Process terminating with default action of signal 5 (SIGTRAP): dumping core
==15405== at 0x10F80054: v8::base::OS::Abort() (platform-posix.cc:395)
==15405== by 0x10F7AF77: V8_Fatal(char const*, int, char const*, ...) (logging.cc:171)
==15405== by 0x10EB50BF: v8::internal::Assembler::GrowBuffer(int) (assembler-ppc.cc:1998)
==15405== by 0x10EBB7FB: CheckBuffer (assembler-ppc.h:1537)
==15405== by 0x10EBB7FB: emit (assembler-ppc.h:1544)
==15405== by 0x10EBB7FB: v8::internal::Assembler::d_form(unsigned int, v8::internal::Register, v8::internal::Register, long, bool) (assembler-ppc.cc:658)
==15405== by 0x10EBDC5F: li (assembler-ppc.cc:1022)
==15405== by 0x10EBDC5F: v8::internal::Assembler::mov(v8::internal::Register, v8::internal::Operand const&) (assembler-ppc.cc:1363)
==15405== by 0x10ED3BF7: v8::internal::TurboAssembler::LoadSmiLiteral(v8::internal::Register, v8::internal::Smi*) (macro-assembler-ppc.cc:2103)
==15405== by 0x10F829D3: Move (macro-assembler-ppc.h:516)
==15405== by 0x10F829D3: v8::internal::(anonymous namespace)::BuildPlaceholder(v8::internal::Isolate*, int) (setup-builtins-internal.cc:55)
==15405== by 0x10F82D63: v8::internal::SetupIsolateDelegate::PopulateWithPlaceholders(v8::internal::Isolate*) (setup-builtins-internal.cc:170)
==15405== by 0x10F84017: v8::internal::SetupIsolateDelegate::SetupBuiltinsInternal(v8::internal::Isolate*) (setup-builtins-internal.cc:220)
==15405== by 0x10F82887: v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*) (setup-isolate-full.cc:18)
==15405== by 0x10B0B59F: v8::internal::Isolate::Init(v8::internal::StartupDeserializer*) (isolate.cc:3060)
==15405== by 0x10594D67: v8::Isolate::Initialize(v8::Isolate*, v8::Isolate::CreateParams const&) (api.cc:8343)
==15405== by 0x10594F57: v8::Isolate::New(v8::Isolate::CreateParams const&) (api.cc:8354)
==15405== by 0x10351667: node::NewIsolate(node::ArrayBufferAllocator*) (node.cc:2924)
==15405== by 0x1035331B: Start (node.cc:2942)
==15405== by 0x1035331B: node::Start(int, char**) (node.cc:3029)
==15405== by 0x102FA547: main (node_main.cc:124)
==15405== Thread 1:

@kraj
Copy link
Contributor

kraj commented Mar 30, 2020

Can you try backporting nodejs/node@048918a

@sharmadeepak29
Copy link
Author

I have backported as suggested. However, As my baseline is Node 10.15.3 so I was not able to add tools/v8_gypfiles/v8.gyp file changes. Rest other files were present in some other path so merge the changes. Will share the results soon once I install the load on hardware.

@sharmadeepak29
Copy link
Author

sharmadeepak29 commented Apr 1, 2020

void Assembler::GrowBuffer(int needed) {
  if (!own_buffer_) FATAL("external code buffer is too small");

I see the variable own_buffer_ is never set to True in case of ppc while in arm64 architecture is was set somewhere. Below of a grep output comparing arm64 and ppc.
v8/src/arm64/assembler-arm64.cc:4701:  if (!own_buffer_) FATAL("external code buffer is too small");
v8/src/arm64/disasm-arm64.cc:27:  own_buffer_ = true;
v8/src/arm64/disasm-arm64.cc:35:  own_buffer_ = false;
v8/src/arm64/disasm-arm64.cc:40:  if (own_buffer_) {
v8/src/arm64/disasm-arm64.h:80:  bool own_buffer_;
v8/src/ppc/assembler-ppc.cc:1998:  if (!own_buffer_) FATAL("external code buffer is too small");
Below trace is after applying the mentioned changes. I see a mismatched free. Could that be a reason for this trap.

#
# Fatal error in , line 0
# external code buffer is too small
#
#
#
#FailureMessage Object: 0x1ffefff260==9598==
==9598== Process terminating with default action of signal 5 (SIGTRAP): dumping core
==9598==    at 0x10F80054: v8::base::OS::Abort() (in /usr/bin/node)
==9598==    by 0x10F7AF77: V8_Fatal(char const*, int, char const*, ...) (in /usr/bin/node)
==9598==    by 0x10EB50BF: v8::internal::Assembler::GrowBuffer(int) (in /usr/bin/node)
==9598==    by 0x10EBB7FB: v8::internal::Assembler::d_form(unsigned int, v8::internal::Register, v8::internal::Register, long, bool) (in /usr/bin/node)
==9598==    by 0x10EBDC5F: v8::internal::Assembler::mov(v8::internal::Register, v8::internal::Operand const&) (in /usr/bin/node)
==9598==    by 0x10ED3BF7: v8::internal::TurboAssembler::LoadSmiLiteral(v8::internal::Register, v8::internal::Smi*) (in /usr/bin/node)
==9598==    by 0x10F829D3: ??? (in /usr/bin/node)
==9598==    by 0x10F82D63: v8::internal::SetupIsolateDelegate::PopulateWithPlaceholders(v8::internal::Isolate*) (in /usr/bin/node)
==9598==    by 0x10F84017: v8::internal::SetupIsolateDelegate::SetupBuiltinsInternal(v8::internal::Isolate*) (in /usr/bin/node)
==9598==    by 0x10F82887: v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*) (in /usr/bin/node)
==9598==    by 0x10B0B59F: v8::internal::Isolate::Init(v8::internal::StartupDeserializer*) (in /usr/bin/node)
==9598==    by 0x10594D67: v8::Isolate::Initialize(v8::Isolate*, v8::Isolate::CreateParams const&) (in /usr/bin/node)
==9598==    by 0x10594F57: v8::Isolate::New(v8::Isolate::CreateParams const&) (in /usr/bin/node)
==9598==    by 0x10351667: node::NewIsolate(node::ArrayBufferAllocator*) (in /usr/bin/node)
==9598==    by 0x1035331B: node::Start(int, char**) (in /usr/bin/node)
==9598==    by 0x102FA547: main (in /usr/bin/node)
==9598== Thread 1:
==9598== Mismatched free() / delete / delete []
==9598==    at 0x406B058: free (in /usr/lib64/valgrind/vgpreload_memcheck-ppc64be-linux.so)
==9598==    by 0x4AEC15F: free_key_mem (dlerror.c:220)
==9598==    by 0x4AECD6F: __libdl_freeres (dlfreeres.c:28)
==9598==    by 0x506262F: __libc_freeres (in /lib64/libc-2.28.so)
==9598==    by 0x4042957: _vgnU_freeres (in /usr/lib64/valgrind/vgpreload_core-ppc64be-linux.so)
==9598==    by 0x10F7AF77: V8_Fatal(char const*, int, char const*, ...) (in /usr/bin/node)
==9598==    by 0x10F7AF77: V8_Fatal(char const*, int, char const*, ...) (in /usr/bin/node)
==9598==    by 0x10EB50BF: v8::internal::Assembler::GrowBuffer(int) (in /usr/bin/node)
==9598==    by 0x10EBB7FB: v8::internal::Assembler::d_form(unsigned int, v8::internal::Register, v8::internal::Register, long, bool) (in /usr/bin/node)
==9598==    by 0x10EBDC5F: v8::internal::Assembler::mov(v8::internal::Register, v8::internal::Operand const&) (in /usr/bin/node)
==9598==    by 0x10ED3BF7: v8::internal::TurboAssembler::LoadSmiLiteral(v8::internal::Register, v8::internal::Smi*) (in /usr/bin/node)
==9598==    by 0x10F829D3: ??? (in /usr/bin/node)
==9598==    by 0x10F82D63: v8::internal::SetupIsolateDelegate::PopulateWithPlaceholders(v8::internal::Isolate*) (in /usr/bin/node)
==9598==    by 0x10F84017: v8::internal::SetupIsolateDelegate::SetupBuiltinsInternal(v8::internal::Isolate*) (in /usr/bin/node)
==9598==    by 0x10F82887: v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*) (in /usr/bin/node)
==9598==    by 0x10B0B59F: v8::internal::Isolate::Init(v8::internal::StartupDeserializer*) (in /usr/bin/node)
==9598==    by 0x10594D67: v8::Isolate::Initialize(v8::Isolate*, v8::Isolate::CreateParams const&) (in /usr/bin/node)
==9598==    by 0x10594F57: v8::Isolate::New(v8::Isolate::CreateParams const&) (in /usr/bin/node)
==9598==    by 0x10351667: node::NewIsolate(node::ArrayBufferAllocator*) (in /usr/bin/node)
==9598==    by 0x1035331B: node::Start(int, char**) (in /usr/bin/node)
==9598==    by 0x102FA547: main (in /usr/bin/node)
==9598==  Address 0x5111be0 is 0 bytes inside a block of size 40,128 alloc'd
==9598==    at 0x406A204: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-ppc64be-linux.so)
==9598==    by 0x10594F3B: v8::Isolate::New(v8::Isolate::CreateParams const&) (in /usr/bin/node)
==9598==    by 0x10351667: node::NewIsolate(node::ArrayBufferAllocator*) (in /usr/bin/node)
==9598==    by 0x1035331B: node::Start(int, char**) (in /usr/bin/node)
==9598==    by 0x102FA547: main (in /usr/bin/node)

@kraj
Copy link
Contributor

kraj commented Apr 1, 2020

That might be another problem on top

@sharmadeepak29
Copy link
Author

Could you please suggest any particular fix for this where should this buffer be initialised to true or something else??

@sharmadeepak29
Copy link
Author

One more stack trace if it helps. After continuing from here it traps

gdb) bt
#0  0x0000000010eb4e74 in .v8::internal::Assembler::GrowBuffer(int) ()
#1  0x0000000010ebb7fc in .v8::internal::Assembler::d_form(unsigned int, v8::internal::Register, v8::internal::Register, long, bool) ()
#2  0x0000000010ebbe70 in .v8::internal::Assembler::lbz(v8::internal::Register, v8::internal::MemOperand const&) ()
#3  0x0000000010ee92fc in .v8::internal::RegExpMacroAssemblerPPC::LoadCurrentCharacterUnchecked(int, int) ()
#4  0x0000000010c97504 in .v8::internal::ChoiceNode::EmitOutOfLineContinuation(v8::internal::RegExpCompiler*, v8::internal::Trace*, v8::internal::GuardedAlternative, v8::internal::AlternativeGeneration*, int, bool) ()
#5  0x0000000010c9c418 in .v8::internal::ChoiceNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) ()
#6  0x0000000010c9b92c in .v8::internal::Trace::Flush(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*) ()
#7  0x0000000010c9c9c4 in .v8::internal::ActionNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) ()
#8  0x0000000010ca1dd0 in .v8::internal::TextNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) ()
#9  0x0000000010c974a0 in .v8::internal::ChoiceNode::EmitOutOfLineContinuation(v8::internal::RegExpCompiler*, v8::internal::Trace*, v8::internal::GuardedAlternative, v8::internal::AlternativeGeneration*, int, bool) ()
#10 0x0000000010c9c418 in .v8::internal::ChoiceNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) ()
#11 0x0000000010c9b92c in .v8::internal::Trace::Flush(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*) ()
#12 0x0000000010c96f10 in .v8::internal::ChoiceNode::EmitChoices(v8::internal::RegExpCompiler*, v8::internal::AlternativeGenerationList*, int, v8::internal::Trace*, v8::internal::PreloadState*) ()
#13 0x0000000010c9c5a8 in .v8::internal::ChoiceNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) ()
#14 0x0000000010ca1dd0 in .v8::internal::TextNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) ()
#15 0x0000000010c974a0 in .v8::internal::ChoiceNode::EmitOutOfLineContinuation(v8::internal::RegExpCompiler*, v8::internal::Trace*, v8::internal::GuardedAlternative, v8::internal::AlternativeGeneration*, int, bool) ()
#16 0x0000000010c9c418 in .v8::internal::ChoiceNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) ()
#17 0x0000000010c96f10 in .v8::internal::ChoiceNode::EmitChoices(v8::internal::RegExpCompiler*, v8::internal::AlternativeGenerationList*, int, v8::internal::Trace*, v8::internal::PreloadState*) ()
#18 0x0000000010c971cc in .v8::internal::ChoiceNode::EmitGreedyLoop(v8::internal::RegExpCompiler*, v8::internal::Trace*, v8::internal::AlternativeGenerationList*, v8::internal::PreloadState*, v8::internal::GreedyLoopState*, int) ()
#19 0x0000000010c9c328 in .v8::internal::ChoiceNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) ()
#20 0x0000000010c9b92c in .v8::internal::Trace::Flush(v8::internal::RegExpCompiler*, v8::internal::RegExpNode*) ()
#21 0x0000000010ca1dd0 in .v8::internal::TextNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) ()
#22 0x0000000010c9c9c4 in .v8::internal::ActionNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) ()
#23 0x0000000010c97600 in .v8::internal::ChoiceNode::EmitOutOfLineContinuation(v8::internal::RegExpCompiler*, v8::internal::Trace*, v8::internal::GuardedAlternative, v8::internal::AlternativeGeneration*, int, bool) ()
#24 0x0000000010c9c418 in .v8::internal::ChoiceNode::Emit(v8::internal::RegExpCompiler*, v8::internal::Trace*) ()
#25 0x0000000010ca66e4 in .v8::internal::RegExpCompiler::Assemble(v8::internal::RegExpMacroAssembler*, v8::internal::RegExpNode*, int, v8::internal::Handle<v8::internal::String>) ()
#26 0x0000000010ca86ac in .v8::internal::RegExpEngine::Compile(v8::internal::Isolate*, v8::internal::Zone*, v8::internal::RegExpCompileData*, v8::base::Flags<v8::internal::JSRegExp::Flag, int>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, bool) ()
#27 0x0000000010ca8bb4 in .v8::internal::RegExpImpl::CompileIrregexp(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, bool) ()
#28 0x0000000010ca90d8 in .v8::internal::RegExpImpl::IrregexpPrepare(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>) ()
#29 0x0000000010ca9694 in .v8::internal::RegExpImpl::IrregexpExec(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, v8::internal::Handle<v8::internal::RegExpMatchInfo>) ()
#30 0x0000000010ca99e4 in .v8::internal::RegExpImpl::Exec(v8::internal::Handle<v8::internal::JSRegExp>, v8::internal::Handle<v8::internal::String>, int, v8::internal::Handle<v8::internal::RegExpMatchInfo>) ()
#31 0x0000000010d6170c in .v8::internal::Runtime_RegExpExec(int, v8::internal::Object**, v8::internal::Isolate*) ()
#32 0x0000039b59b26fc8 in ?? ()
(gdb) c
Continuing.

kraj pushed a commit to YoeDistro/meta-openembedded that referenced this issue Jul 5, 2021
0.18.0, 2021-06-28
 * Fix openembedded#209 Update freeze recurse into pyrsistent data structures and thaw to recurse into lists and dicts,
   Thanks @phil-arh for this!
   NB! This is a backwards incompatible change! To keep the old behaviour pass `strict=False` to freeze and thaw.
 * Fix openembedded#226, stop using deprecated exception.message. Thanks @hexagonrecursion for this!
 * Fix openembedded#211, add union operator to persistent maps. Thanks @bowbahdoe for this!
 * Fix openembedded#194, declare build dependencies through pyproject.toml. Thanks @jaraco for this!
 * Officially drop Python 3.5 support.
 * Fix openembedded#223, release wheels for all major platforms. Thanks @johnthagen for helping out with this!
 * Fix openembedded#221, KeyError obscured by TypeError if key is a tuple. Thanks @ganwell for this!
 * Fix LICENSE file name spelling. Thanks @ndowens and @barentsen for this!
 * Fix openembedded#216, add abstractmethod decorator for CheckedType and ABCMeta for _CheckedTypeMeta. Thanks @ss18 for this!
 * Fix openembedded#228, rename example classes in tests to avoid name clashes with pytest.

-License-Update: Copyright year updated to 2021.

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj pushed a commit to YoeDistro/meta-openembedded that referenced this issue Sep 27, 2022
Changelog:
==========
 Refreshed packaging.
 openembedded#197: Fixed default argument rendering in docs.
 openembedded#209: Refactored write_lines to re-use open semantics. Deprecated the linesep parameter.

Signed-off-by: Wang Mingyu <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
halstead pushed a commit that referenced this issue Sep 28, 2022
Changelog:
==========
 Refreshed packaging.
 #197: Fixed default argument rendering in docs.
 #209: Refactored write_lines to re-use open semantics. Deprecated the linesep parameter.

Signed-off-by: Wang Mingyu <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj pushed a commit to YoeDistro/meta-openembedded that referenced this issue Nov 4, 2023
GWeather 4.4.0 (stable)
=======================

- nws: fix null string comparison when reading visibility [!282]
- Translation updates
- Location database changes
  - Adds Cities from Ukraines Zaporizhzhia Oblast [!276]

GWeather 4.3.2 (development)
============================

- Fix fallback metric unit detection logic [!231]
- Documentation fixes [!229]
- Performance improvements for nearest location lookups [!271]
- Location database changes
  - Add Ulsan city and Ulsan Airport [!218]
  - Add Koblenz and Mainz (Germany) [!184]
  - Add São Bento do Sul, Brazil [!220]
  - Add Ryazan' city [!224]
  - Add Freiburg and Heidelberg in Germany [!225]
  - Add Nottingham, UK [!268]
  - Add cities and airports in Argentina [!270]
  - Add Bracknell, United Kingdom [!249]
  - Update Romanian cities [!255]
  - Add cities in Rwanda [!260]
  - Add Mahilyow, Belarus [!250]
  - Add Aachen (North Rhine-Westphalia, Germany) [!246]
  - Add airports, structure of regions and biggest regional cities of Ukraine
[!242]
  - Add Osh City (Kyrgyzstan) [!190]
  - Add city Caravaca de la Cruz [!237]
  - Add a new Argentinian city, Bahía Blanca [!177]
  - Fix timezone for Denpasar [openembedded#209]
  - Fix spelling of Siem Reap [openembedded#199]
  - Add Rio Grande in Brazil [!226]
  - Add major cities of Japan [!267]
  - Add some cities in Germany [!266]
- Translation updates

Signed-off-by: Markus Volk <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj pushed a commit to YoeDistro/meta-openembedded that referenced this issue Nov 4, 2023
GWeather 4.4.0 (stable)
=======================

- nws: fix null string comparison when reading visibility [!282]
- Translation updates
- Location database changes
  - Adds Cities from Ukraines Zaporizhzhia Oblast [!276]

GWeather 4.3.2 (development)
============================

- Fix fallback metric unit detection logic [!231]
- Documentation fixes [!229]
- Performance improvements for nearest location lookups [!271]
- Location database changes
  - Add Ulsan city and Ulsan Airport [!218]
  - Add Koblenz and Mainz (Germany) [!184]
  - Add São Bento do Sul, Brazil [!220]
  - Add Ryazan' city [!224]
  - Add Freiburg and Heidelberg in Germany [!225]
  - Add Nottingham, UK [!268]
  - Add cities and airports in Argentina [!270]
  - Add Bracknell, United Kingdom [!249]
  - Update Romanian cities [!255]
  - Add cities in Rwanda [!260]
  - Add Mahilyow, Belarus [!250]
  - Add Aachen (North Rhine-Westphalia, Germany) [!246]
  - Add airports, structure of regions and biggest regional cities of Ukraine
[!242]
  - Add Osh City (Kyrgyzstan) [!190]
  - Add city Caravaca de la Cruz [!237]
  - Add a new Argentinian city, Bahía Blanca [!177]
  - Fix timezone for Denpasar [openembedded#209]
  - Fix spelling of Siem Reap [openembedded#199]
  - Add Rio Grande in Brazil [!226]
  - Add major cities of Japan [!267]
  - Add some cities in Germany [!266]
- Translation updates

Signed-off-by: Markus Volk <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj pushed a commit to YoeDistro/meta-openembedded that referenced this issue Nov 6, 2023
GWeather 4.4.0 (stable)
=======================

- nws: fix null string comparison when reading visibility [!282]
- Translation updates
- Location database changes
  - Adds Cities from Ukraines Zaporizhzhia Oblast [!276]

GWeather 4.3.2 (development)
============================

- Fix fallback metric unit detection logic [!231]
- Documentation fixes [!229]
- Performance improvements for nearest location lookups [!271]
- Location database changes
  - Add Ulsan city and Ulsan Airport [!218]
  - Add Koblenz and Mainz (Germany) [!184]
  - Add São Bento do Sul, Brazil [!220]
  - Add Ryazan' city [!224]
  - Add Freiburg and Heidelberg in Germany [!225]
  - Add Nottingham, UK [!268]
  - Add cities and airports in Argentina [!270]
  - Add Bracknell, United Kingdom [!249]
  - Update Romanian cities [!255]
  - Add cities in Rwanda [!260]
  - Add Mahilyow, Belarus [!250]
  - Add Aachen (North Rhine-Westphalia, Germany) [!246]
  - Add airports, structure of regions and biggest regional cities of Ukraine
[!242]
  - Add Osh City (Kyrgyzstan) [!190]
  - Add city Caravaca de la Cruz [!237]
  - Add a new Argentinian city, Bahía Blanca [!177]
  - Fix timezone for Denpasar [openembedded#209]
  - Fix spelling of Siem Reap [openembedded#199]
  - Add Rio Grande in Brazil [!226]
  - Add major cities of Japan [!267]
  - Add some cities in Germany [!266]
- Translation updates

Signed-off-by: Markus Volk <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj pushed a commit to YoeDistro/meta-openembedded that referenced this issue Nov 6, 2023
GWeather 4.4.0 (stable)
=======================

- nws: fix null string comparison when reading visibility [!282]
- Translation updates
- Location database changes
  - Adds Cities from Ukraines Zaporizhzhia Oblast [!276]

GWeather 4.3.2 (development)
============================

- Fix fallback metric unit detection logic [!231]
- Documentation fixes [!229]
- Performance improvements for nearest location lookups [!271]
- Location database changes
  - Add Ulsan city and Ulsan Airport [!218]
  - Add Koblenz and Mainz (Germany) [!184]
  - Add São Bento do Sul, Brazil [!220]
  - Add Ryazan' city [!224]
  - Add Freiburg and Heidelberg in Germany [!225]
  - Add Nottingham, UK [!268]
  - Add cities and airports in Argentina [!270]
  - Add Bracknell, United Kingdom [!249]
  - Update Romanian cities [!255]
  - Add cities in Rwanda [!260]
  - Add Mahilyow, Belarus [!250]
  - Add Aachen (North Rhine-Westphalia, Germany) [!246]
  - Add airports, structure of regions and biggest regional cities of Ukraine
[!242]
  - Add Osh City (Kyrgyzstan) [!190]
  - Add city Caravaca de la Cruz [!237]
  - Add a new Argentinian city, Bahía Blanca [!177]
  - Fix timezone for Denpasar [openembedded#209]
  - Fix spelling of Siem Reap [openembedded#199]
  - Add Rio Grande in Brazil [!226]
  - Add major cities of Japan [!267]
  - Add some cities in Germany [!266]
- Translation updates

Signed-off-by: Markus Volk <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj pushed a commit to YoeDistro/meta-openembedded that referenced this issue Nov 6, 2023
GWeather 4.4.0 (stable)
=======================

- nws: fix null string comparison when reading visibility [!282]
- Translation updates
- Location database changes
  - Adds Cities from Ukraines Zaporizhzhia Oblast [!276]

GWeather 4.3.2 (development)
============================

- Fix fallback metric unit detection logic [!231]
- Documentation fixes [!229]
- Performance improvements for nearest location lookups [!271]
- Location database changes
  - Add Ulsan city and Ulsan Airport [!218]
  - Add Koblenz and Mainz (Germany) [!184]
  - Add São Bento do Sul, Brazil [!220]
  - Add Ryazan' city [!224]
  - Add Freiburg and Heidelberg in Germany [!225]
  - Add Nottingham, UK [!268]
  - Add cities and airports in Argentina [!270]
  - Add Bracknell, United Kingdom [!249]
  - Update Romanian cities [!255]
  - Add cities in Rwanda [!260]
  - Add Mahilyow, Belarus [!250]
  - Add Aachen (North Rhine-Westphalia, Germany) [!246]
  - Add airports, structure of regions and biggest regional cities of Ukraine
[!242]
  - Add Osh City (Kyrgyzstan) [!190]
  - Add city Caravaca de la Cruz [!237]
  - Add a new Argentinian city, Bahía Blanca [!177]
  - Fix timezone for Denpasar [openembedded#209]
  - Fix spelling of Siem Reap [openembedded#199]
  - Add Rio Grande in Brazil [!226]
  - Add major cities of Japan [!267]
  - Add some cities in Germany [!266]
- Translation updates

Signed-off-by: Markus Volk <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants