Crash on Production App - signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) - libflutter.so

Steps to Reproduce
We are observing an important amount of crashes in our production app, which is built on Flutter v1.4.9-hotfix.1. There are various reports, but the stack trace is always similar (you can find it below).
The most affected devices are Galaxy S7 (heroqltetmo) and LG G5 (h1).
OSes are mixed (android 6.0, 7.0, 7.1, 8.0).
It looks like a relatively small amount of devices reports a big amount of crashes. So this probably means that the app for these users is almost unusable.
Logs
********** Crash dump: **********
pid: 0, tid: 0 >>> com.bendingspoons.live.quiz <<<
Stack frame #00  pc<PHONE_NUMBER>204064  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine BFD: Dwarf Error: mangled line number section (bad file number).
SkPath::isInverseFillType() const at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/include/core/SkPath.h:192
Stack frame #01  pc<PHONE_NUMBER>169b9d  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine SkStrokeRec::isFillStyle() const at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/include/core/SkStrokeRec.h:47
Stack frame #02  pc<PHONE_NUMBER>20a593  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine BFD: Dwarf Error: mangled line number section (bad file number).
GrDrawingManager::getPathRenderer(GrPathRenderer::CanDrawPathArgs const&, bool, GrPathRendererChain::DrawType, GrPathRenderer::StencilSupport*) at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/src/gpu/GrPathRenderer.h:116
Stack frame #03  pc<PHONE_NUMBER>21655f  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine BFD: Dwarf Error: mangled line number section (bad file number).
GrRenderTargetContext::drawShapeUsingPathRenderer(GrClip const&, GrPaint&&, GrAA, SkMatrix const&, GrShape const&) at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/src/gpu/GrRenderTargetContext.cpp:1980
Stack frame #04  pc<PHONE_NUMBER>218117  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine BFD: Dwarf Error: mangled line number section (bad file number).
GrRenderTargetContext::drawShape(GrClip const&, GrPaint&&, GrAA, SkMatrix const&, GrShape const&) at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/src/gpu/GrRenderTargetContext.cpp:1860
Stack frame #05  pc<PHONE_NUMBER>217eb7  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine BFD: Dwarf Error: mangled line number section (bad file number).
GrRenderTargetContext::drawPath(GrClip const&, GrPaint&&, GrAA, SkMatrix const&, SkPath const&, GrStyle const&) at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/src/gpu/GrRenderTargetContext.cpp:1804
Stack frame #06  pc<PHONE_NUMBER>267e99  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine BFD: Dwarf Error: mangled line number section (bad file number).
SkGpuDevice::drawPath(SkPath const&, SkPaint const&, bool) at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/src/gpu/SkGpuDevice.cpp:644
Stack frame #07  pc<PHONE_NUMBER>16b617  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine SkCanvas::onDrawPath(SkPath const&, SkPaint const&) at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/src/core/SkCanvas.cpp:2229
Stack frame #08  pc<PHONE_NUMBER>16de47  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine SkCanvas::drawPath(SkPath const&, SkPaint const&) at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/src/core/SkCanvas.cpp:1776
Stack frame #09  pc<PHONE_NUMBER>196105  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine BFD: Dwarf Error: mangled line number section (bad file number).
SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/src/core/SkRecordDraw.cpp:53
Stack frame #10  pc<PHONE_NUMBER>1bfa17  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine BFD: Dwarf Error: mangled line number section (bad file number).
SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/src/core/SkBigPicture.cpp:33
Stack frame #11  pc<PHONE_NUMBER>16ca13  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/src/core/SkCanvas.cpp:2803
Stack frame #12  pc<PHONE_NUMBER>16ecf7  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) at /b/s/w/ir/k/src/out/android_release/../../third_party/skia/src/core/SkCanvas.cpp:2783
Stack frame #13  pc<PHONE_NUMBER>133b8f  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine flow::PictureLayer::Paint(flow::Layer::PaintContext&) const at /b/s/w/ir/k/src/out/android_release/../../flutter/flow/layers/picture_layer.cc:52
Stack frame #14  pc<PHONE_NUMBER>131edb  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine flow::ContainerLayer::PaintChildren(flow::Layer::PaintContext&) const at /b/s/w/ir/k/src/out/android_release/../../flutter/flow/layers/container_layer.cc:47
Stack frame #15  pc<PHONE_NUMBER>133fa3  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine flow::TransformLayer::Paint(flow::Layer::PaintContext&) const at /b/s/w/ir/k/src/out/android_release/../../flutter/flow/layers/transform_layer.cc:51
Stack frame #16  pc<PHONE_NUMBER>1311c5  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine flow::CompositorContext::ScopedFrame::Raster(flow::LayerTree&, bool) at /b/s/w/ir/k/src/out/android_release/../../flutter/flow/layers/layer_tree.cc:92
Stack frame #17  pc<PHONE_NUMBER>158957  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine shell::Rasterizer::DrawToSurface(flow::LayerTree&) at /b/s/w/ir/k/src/out/android_release/../../flutter/shell/common/rasterizer.cc:196
Stack frame #18  pc<PHONE_NUMBER>158bf7  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine shell::Rasterizer::DoDraw(std::__1::unique_ptr<flow::LayerTree, std::__1::default_delete<flow::LayerTree> >) at /b/s/w/ir/k/src/out/android_release/../../flutter/shell/common/rasterizer.cc:158
Stack frame #19  pc<PHONE_NUMBER>1594a9  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine _ZNSt3__18__invokeIRMN5shell10RasterizerEFvNS_10unique_ptrIN4flow9LayerTreeENS_14default_deleteIS5_EEEEERPS2_JS8_EvEEDTcldsdeclsr3std3__1E7forwardIT0_Efp0_Efp_spclsr3std3__1E7forwardIT1_Efp1_EEEOT_OSE_DpOSF_ at /b/s/w/ir/k/src/out/android_release/../../third_party/libcxx/include/type_traits:4291
Stack frame #20  pc<PHONE_NUMBER>158b03  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine std::__1::function<void (std::__1::unique_ptr<flow::LayerTree, std::__1::default_delete<flow::LayerTree> >)>::operator()(std::__1::unique_ptr<flow::LayerTree, std::__1::default_delete<flow::LayerTree> >) const at /b/s/w/ir/k/src/out/android_release/../../third_party/libcxx/include/functional:1923
Stack frame #21  pc<PHONE_NUMBER>158e61  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine operator() at /b/s/w/ir/k/src/out/android_release/../../flutter/shell/common/rasterizer.cc:88
Stack frame #22  pc<PHONE_NUMBER>1377d1  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine fml::MessageLoopImpl::RunExpiredTasks() at /b/s/w/ir/k/src/out/android_release/../../flutter/fml/message_loop_impl.cc:141
Stack frame #23  pc<PHONE_NUMBER>138bcd  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine fml::MessageLoopImpl::RunExpiredTasksNow() at /b/s/w/ir/k/src/out/android_release/../../flutter/fml/message_loop_impl.cc:52
Stack frame #24  pc<PHONE_NUMBER>01057d  /system/lib/libutils.so (_ZN7android6Looper9pollInnerEi+572)
Stack frame #25  pc<PHONE_NUMBER>0102a9  /system/lib/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+32)
Stack frame #26  pc<PHONE_NUMBER>00d38f  /system/lib/libandroid.so (ALooper_pollOnce+50)
Stack frame #27  pc<PHONE_NUMBER>138c67  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine fml::MessageLoopAndroid::Run() at /b/s/w/ir/k/src/out/android_release/../../flutter/fml/platform/android/message_loop_android.cc:68
Stack frame #28  pc<PHONE_NUMBER>13699b  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine fml::MessageLoop::Run() at /b/s/w/ir/k/src/out/android_release/../../flutter/fml/message_loop_impl.cc:77
Stack frame #29  pc<PHONE_NUMBER>137b8b  /data/app/com.bendingspoons.live.quiz-RMFUn1ho6LW1JTEv0Howqg==/lib/arm/libflutter.so: Routine operator() at /b/s/w/ir/k/src/out/android_release/../../flutter/fml/thread.cc:34
Stack frame #30  pc<PHONE_NUMBER>049bdf  /system/lib/libc.so (_ZL15__pthread_startPv+22)
Stack frame #31  pc<PHONE_NUMBER>01b57d  /system/lib/libc.so (__start_thread+32)

@dnfield the crash is most likely happening when rendering a SVG Picture using flutter_svg.
Are you aware of anything that changed from Flutter v1.2.1 to 1.4.9-hotfix.1 inside Skia that might be causing this crash on certain devices (and maybe has already been fixed/reverted in new builds of the engine)?

CCPR was disabled, but I don't know how that would cause a crash.
/cc @csmartdalton86
/cc @liyuqian

That location seems like a very strange place to crash :\

We managed to reproduce it on a real device on Sauce Labs (G5 on Android 7).
Still unsure about what was causing it.

Are you able to symbolicate that crash?

It looks like it's the same crash that I symbolicated above (same stack trace)

I'm not sure if it's exactly the same problem, it was only reported with 1 user, it states that the device reboots!
Also I do not know how to reproduce, I'm not using flutter_svg, however, I generate an image through a Canvas and use the google maps plugin.
The error occurred on the device Moto G (2nd Gen) (titan_umtsds) Android 6.0
  #00  pc<PHONE_NUMBER>043098  /system/lib/libc.so (tgkill+12)
  #01  pc<PHONE_NUMBER>041d85  /system/lib/libc.so (pthread_kill+32)
  #02  pc<PHONE_NUMBER>01b8e7  /system/lib/libc.so (raise+10)
  #03  pc<PHONE_NUMBER>018a99  /system/lib/libc.so (__libc_android_abort+34)
  #04  pc<PHONE_NUMBER>016920  /system/lib/libc.so (abort+4)
  #05  pc<PHONE_NUMBER>136b03  /data/app/br.com.projectnetwork.onibus-2/lib/arm/libflutter.so
  #06  pc<PHONE_NUMBER>1545a7  /data/app/br.com.projectnetwork.onibus-2/lib/arm/libflutter.so
  #07  pc<PHONE_NUMBER>12d903  /data/app/br.com.projectnetwork.onibus-2/lib/arm/libflutter.so
  #08  pc<PHONE_NUMBER>46b8c5  /data/app/br.com.projectnetwork.onibus-2/oat/arm/base.odex

Same issue found on my app after production.
The error reported in Oppo A37f (A37f), Android 5.1
The log is

pid: 0, tid: 0 >>> com.myapp.android <<<
backtrace:
#00  pc<PHONE_NUMBER>019ffc  /data/app/com.myapp.android-1/lib/arm/libflutter.so
#01  pc<PHONE_NUMBER>01b9eb  /data/app/com.myapp.android-1/lib/arm/libflutter.so
#02  pc<PHONE_NUMBER>961585  /data/dalvik-cache/arm/data@app@com.myapp.android-1<EMAIL_ADDRESS>My flutter version is Flutter 1.5.4-hotfix.2 • channel stable •
Tools • Dart 2.3.0 (build 2.3.0-dev.0.5 a1668566e5)
Why it happening

I have some issues too in android 6.0 devices :
07-11 14:24:08.208 4261-4264/? E/ANDR-PERF-RESOURCEQS: Failed to apply optimization [4, 0]
07-11 14:24:08.210 1262-3098/? E/ActivityManager: Invalid thumbnail dimensions: 0x0
07-11 14:24:08.676 379-387/? E/cutils: Failed to openat(/storage/0403-0201): Permission denied
07-11 14:24:08.681 379-387/? E/cutils: Failed to openat(/storage/0403-0201): Permission denied
07-11 14:24:08.778 22012-22012/? E/flutter: [ERROR:flutter/fml/platform/posix/native_library_posix.cc(16)] Could not open library '/data/app/com.topkarir.topkarir-2/lib/arm64/libflutter.so' due to error 'dlopen failed: library "/data/app/com.topkarir.topkarir-2/lib/arm64/libflutter.so" not found'.
07-11 14:24:08.778 22012-22012/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8 in tid 22012 (pkarir.topkarir)
07-11 14:24:08.830 524-524/?  A/DEBUG: Build fingerprint: 'Xiaomi/helium/helium:6.0.1/MMB29M/V<IP_ADDRESS>.MBDCNDE:user/release-keys'
07-11 14:24:08.830 524-524/? A/DEBUG: Revision: '0'
07-11 14:24:08.830 524-524/? A/DEBUG: ABI: 'arm64'
07-11 14:24:08.830 524-524/? A/DEBUG: pid: 22012, tid: 22012, name: pkarir.topkarir  >>> com.topkarir.topkarir <<<
07-11 14:24:08.830 524-524/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8
07-11 14:24:08.838 524-524/? A/DEBUG:     x0   0000007fe412b6b8  x1   0000007f7d87353f  x2<PHONE_NUMBER>000006  x3<PHONE_NUMBER>007472
07-11 14:24:08.838 524-524/? A/DEBUG:     x4<PHONE_NUMBER>000000  x5<PHONE_NUMBER>000001  x6<PHONE_NUMBER>2510f8  x7   0000007f7d873539
07-11 14:24:08.838 524-524/? A/DEBUG:     x8<PHONE_NUMBER>000021  x9<PHONE_NUMBER>2510e0  x10<PHONE_NUMBER>151100  x11<PHONE_NUMBER>000033
07-11 14:24:08.838 524-524/? A/DEBUG:     x12  0000007f9afc3a70  x13<PHONE_NUMBER>251100  x14<PHONE_NUMBER>2510f0  x15<PHONE_NUMBER>0bee70
07-11 14:24:08.839 524-524/? A/DEBUG:     x16  0000007f7dfeea78  x17  0000007f9af2dc08  x18<PHONE_NUMBER>000000  x19  0000007fe412b858
07-11 14:24:08.839 524-524/? A/DEBUG:     x20  0000007fe412b860  x21  0000007fe412b870  x22<PHONE_NUMBER>000000  x23  0000007fe412b6b8
07-11 14:24:08.839 524-524/? A/DEBUG:     x24  0000007f7dfff0d0  x25<PHONE_NUMBER>000008  x26<PHONE_NUMBER>d94080  x27<PHONE_NUMBER>584b40
07-11 14:24:08.839 524-524/? A/DEBUG:     x28<PHONE_NUMBER>4b5dd4  x29<PHONE_NUMBER>df38e0  x30  0000007f7da681ec
07-11 14:24:08.839 524-524/? A/DEBUG:     sp   0000007fe412b6b0  pc   0000007f7da681ec  pstate<PHONE_NUMBER>000000
07-11 14:24:08.839 524-524/? A/DEBUG: backtrace:
07-11 14:24:08.839 524-524/? A/DEBUG:     #00 pc<PHONE_NUMBER>04d1ec  /data/app/com.topkarir.topkarir-2/split_config.arm64_v8a.apk (offset 0x1328000)
07-11 14:24:09.035 524-524/? A/DEBUG: Tombstone written to: /data/tombstones/tombstone_00
07-11 14:24:09.036 524-524/? E/DEBUG: AM write failed: Broken pipe
and i still don't get it what's going on

Also experiencing this in version 1.7.8+hotfix.3

@dnfield I got to reproduce the crash.
It looks like a text rendering issue. On my device it crashes when the container reaches width 186.
Things that stop the crash in this demo:

Use a single \n in the third span
OR
Remove the last WidgetSpan

What could be the issue?
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  static const double kMaxWidth = 200;

  double width = kMaxWidth;
  double sliderVal = 1;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Column(
        children: <Widget>[
          Text("Current width: $width"),
          Slider(
            value: sliderVal,
            onChanged: (val) {
              width = kMaxWidth * val;
              print("New width => $width");
              setState(() {
                sliderVal = val;
              });
            },
          ),
          Container(
            color: Colors.lightGreen,
            width: width,
            child: MyRichText(),
          ),
        ],
      ),
    );
  }
}

class MyRichText extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return RichText(
      text: TextSpan(
        style: TextStyle(
          fontSize: 16,
          color: Colors.black,
        ),
        children: [
          TextSpan(text: "hello"),
          WidgetSpan(child: Block(size: 16)),
          TextSpan(text: "\n\n"),
          WidgetSpan(child: Block(size: 16)),
        ],
      ),
    );
  }
}

class Block extends StatelessWidget {
  const Block({Key key, this.size}) : super(key: key);
  final double size;
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.red,
      height: size,
      width: size,
    );
  }
}

You're getting the same exact stack with that?
@GaryQian does anything jump out at you here?

Interesting, WidgetSpan was only introduced recently, so it is unlikely directly caused by it, though it could be triggering it indirectly. Nothing looks particularly familiar but I can look deeper into it.

I don't think it has to do with WidgetSpan either, because this error occurs also with the package in which my project relied previous to that feature, RealRichText. Iterestingly enough, this crash relies on the "buggy setup" being rendered at least once. Once it renders 2 or 3 times it crashes.

In this screenshot, the placement of the spans is tied to the information it holds (in this case, Magic cards data). First time it is rendered, all is fine; but, if I navigate again to this screen, it will crash. In this app there are many more cards that we will not cause a crash, as it looks like the crash depends on where the paragraph is rendered.
This is the crash symbolicated:
********** Crash dump: **********
Build fingerprint: 'motorola/payton/payton:8.0.0/OPWS27.57-25-6-10/12:user/release-keys'
#00 0x0000000000f90548 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                std::__1::__hash_node_base<std::__1::__hash_node<android::LruCache<int, hb_font_t*>::KeyedEntry*, void*>*>::__hash() const
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../third_party/libcxx/include/__hash_table:97:55
                                                                                std::__1::__hash_iterator<std::__1::__hash_node<android::LruCache<int, hb_font_t*>::KeyedEntry*, void*>*> std::__1::__hash_table<android::LruCache<int, hb_font_t*>::KeyedEntry*, android::LruCache<int, hb_font_t*>::HashForEntry, android::LruCache<int, hb_font_t*>::EqualityForHashedEntries, std::__1::allocator<android::LruCache<int, hb_font_t*>::KeyedEntry*> >::find<android::LruCache<int, hb_font_t*>::KeyedEntry*>(android::LruCache<int, hb_font_t*>::KeyedEntry* const&)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../third_party/libcxx/include/__hash_table:2481:0
#01 0x0000000000f9048c /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                std::__1::unordered_set<android::LruCache<int, hb_font_t*>::KeyedEntry*, android::LruCache<int, hb_font_t*>::HashForEntry, android::LruCache<int, hb_font_t*>::EqualityForHashedEntries, std::__1::allocator<android::LruCache<int, hb_font_t*>::KeyedEntry*> >::find(android::LruCache<int, hb_font_t*>::KeyedEntry* const&)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../third_party/libcxx/include/unordered_set:665:69
                                                                                android::LruCache<int, hb_font_t*>::findByKey(int const&)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/utils/LruCache.h:111:0
#02 0x0000000000f90658 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                android::LruCache<int, hb_font_t*>::get(int const&)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/utils/LruCache.h:194:54
#03 0x0000000000f901f4 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                minikin::HbFontCache::get(int)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/minikin/HbFontCache.cpp:43:50
#04 0x0000000000f900cc /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                minikin::getHbFontLocked(minikin::MinikinFont const*)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/minikin/HbFontCache.cpp:92:32
#05 0x0000000000f917f8 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                minikin::Layout::findFace(minikin::FakedFont const&, minikin::LayoutContext*)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/minikin/Layout.cpp:319:23
#06 0x0000000000f92464 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                minikin::Layout::doLayoutRun(unsigned short const*, unsigned long, unsigned long, unsigned long, bool, minikin::LayoutContext*, std::__1::shared_ptr<minikin::FontCollection> const&)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/minikin/Layout.cpp:956:19
#07 0x0000000000f91f84 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                minikin::LayoutCacheKey::doLayout(minikin::Layout*, minikin::LayoutContext*, std::__1::shared_ptr<minikin::FontCollection> const&) const
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/minikin/Layout.cpp:107:13
#08 0x0000000000f92220 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                minikin::LayoutCache::get(minikin::LayoutCacheKey&, minikin::LayoutContext*, std::__1::shared_ptr<minikin::FontCollection> const&)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/minikin/Layout.cpp:147:11
#09 0x0000000000f91dc4 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                minikin::Layout::doLayoutWord(unsigned short const*, unsigned long, unsigned long, unsigned long, bool, minikin::LayoutContext*, unsigned long, std::__1::shared_ptr<minikin::FontCollection> const&, minikin::Layout*, float*)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/minikin/Layout.cpp:725:35
#10 0x0000000000f91b34 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                minikin::Layout::doLayoutRunCached(unsigned short const*, unsigned long, unsigned long, unsigned long, bool, minikin::LayoutContext*, unsigned long, std::__1::shared_ptr<minikin::FontCollection> const&, minikin::Layout*, float*)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/minikin/Layout.cpp:686:18
#11 0x0000000000f91c70 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                minikin::Layout::measureText(unsigned short const*, unsigned long, unsigned long, unsigned long, bool, minikin::FontStyle const&, minikin::MinikinPaint const&, std::__1::shared_ptr<minikin::FontCollection> const&, float*)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/minikin/Layout.cpp:623:19
#12 0x0000000000f93ed8 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                minikin::LineBreaker::addStyleRun(minikin::MinikinPaint*, std::__1::shared_ptr<minikin::FontCollection> const&, minikin::FontStyle, unsigned long, unsigned long, bool)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/minikin/LineBreaker.cpp:129:13
#13 0x0000000000f99038 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                txt::Paragraph::ComputeLineBreaks()
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/txt/paragraph.cc:344:37
#14 0x0000000000f99dfc /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                txt::Paragraph::Layout(double, bool)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../flutter/third_party/txt/src/txt/paragraph.cc:608:8
#15 0x0000000000d401b8 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                void tonic::DartCall<void (flutter::Canvas::*)(double)>(void (flutter::Canvas::*)(double), _Dart_NativeArguments*)
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../third_party/tonic/dart_args.h:204:11
#16 0x0000000001100eb8 /data/app/com.example.demo-jA5VYjiYCLXF-unNp1FcOw==/lib/arm64/libflutter.so (offset 0xd20000)
                                                                                dart::NativeEntry::AutoScopeNativeCallWrapperNoStackCheck(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*))
                                                                                /b/s/w/ir/k/src/out/android_debug_arm64/../../third_party/dart/runtime/vm/native_entry.cc:192:7
#17 0x00000000000019bc <anonymous:000000775c580000>

We might want to move this to #36176 - this issue was originally about something else, which I'm pretty sure is fixed now.  I'm going to close this for now, but the Widget span stuff can go on in the linked issue.

Having this Issue also on Flutter 1.7.8-hotfix.3 and 4. removing the Widgetsspan no Crashes.

This looks like it is related to https://github.com/flutter/flutter/issues/36176
I am able to repro a crash like this with WidgetSpan, but it does not seem to crash on consistent parts of the code. Im seeing stack traces ranging from Skia to harfbuzz to LibTxt. I am still actively investigating this.
@tb2761 I requested this in the other thread, but I'll post it here too: It would be a great help if you could post your flutter doctor and the reproduction of the crash. Thanks!
I will reopen this as I suspect the root cause is the same.

Actually, closing this again, Realized the reason this was closed was because the original issue was different. Agree with moving further development to #36176

I am not using "WidgetSpan" . But crash is happening on my app.

The WidgetSpan crash is fixed by https://github.com/flutter/engine/pull/10295.


Add FST tool for admins to do analyses

Codecov Report

Merging #793 (2709acd) into master (2c6afac) will decrease coverage by 0.20%.
The diff coverage is 60.71%.

@@            Coverage Diff             @@
##           master     #793      +/-   ##
==========================================
- Coverage   79.75%   79.54%   -0.21%
==========================================
  Files         109      109
  Lines        4178     4199      +21
  Branches      615      618       +3
==========================================
+ Hits         3332     3340       +8
- Misses        734      746      +12
- Partials      112      113       +1

Impacted Files
Coverage Δ

CreeDictionary/CreeDictionary/urls.py
100.00% <ø> (ø)

CreeDictionary/CreeDictionary/views.py
81.90% <35.71%> (-7.11%)
:arrow_down:

...eeDictionary/templatetags/creedictionary_extras.py
84.21% <85.71%> (-2.46%)
:arrow_down:

CreeDictionary/phrase_translate/translate.py
47.10% <85.71%> (+0.49%)
:arrow_up:

CreeDictionary/CreeDictionary/paradigm/filler.py
88.61% <0.00%> (-0.82%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2c6afac...2709acd. Read the comment docs.


Add resource links to library detail page

After talking with @aubrey-oneal - I confirmed that we don't need the body copy (D) in the design reference below for now.
Inheritance

[x] Instead of showing "Depends on", let's keep it simple with "Inherits" if the library uses the inherits schema key
[x] Only show the version if specified in the inherits key (see https://github.com/carbon-design-system/carbon-platform/blob/main/docs/resource-schemas.md#library-inheritance)
[x] The library icon is available here and needs added it to the platform icons package https://ibm.ent.box.com/file/887827201496

Source

[x] Instead of "Source", use "GitHub" or "IBM GitHub" to dual-purpose and the label and the host

Package

[x] Only show if the package.json does not have private: true (see comment below)
[ ] The package icon is available here and needs added to the platform icons package https://ibm.ent.box.com/file/887827201496

Design ref

Internal code packages
We'll be indexing IBM Internal libraries that don't publish packages to npm. Instead, they often publish to artifactory or some other internal registry.
Looking at CloudPal for example, the package.json doesn't specify anywhere that it publishes to artifactory. If this package.json had private: true (as it should), then we know to not try to link out to npm. https://github.ibm.com/ibmcloud/pal/blob/master/patterns/package.json

Hey team! Please add your planning poker estimate with ZenHub @alisonjoseph @andreancardona @francinelucca @jdharvey-ibm

Library redlines: https://ibm.box.com/s/s6btwm637udnek3pbjtfem412kgw83hp

After discussing with @francinelucca, link to npm if:

Library has package.json
package.json isn't private: true
Use package.json name and version to construct an npm URL like<EMAIL_ADDRESS>
We'll have a separate issue to discuss options for GitHub Packages and Artifactory for inner source code packages.

@francinelucca the post-v1 issue linked above so we can figure out those unknowns later.

@francinelucca re-opening to fix:

[ ] h5 color
[ ] h4 font size and line claping
[ ] Inherits library display name


[http]: Fine grained path normalization controls implementation

For an explanation of how to fill out the fields, please see the relevant section
in PULL_REQUESTS.md
Commit Message: Currently, envoy apply path normalization in http connection manager. When a path transformation is enabled, it is visible to all the filters and the upstream server. For fine grained control, we want some path normalization to be visible to filter but not the upstream server. The new hcm api(https://github.com/envoyproxy/envoy/pull/15044) allow user to split the path transformation for filter use and for forwarding. This PR intends to implement fine grained path normalization control(https://github.com/envoyproxy/envoy/issues/6589) based on the new api. This is a draft used to collect opinions early.
Additional Description:
Risk Level: high
Testing: by now only unit test
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Deprecated:]
[Optional API Considerations:]

I wonder if this should be moved into the HeaderMap API. I.e. the HeaderMap API would provide two methods. NormalizedPath would return path normalized for matching and the Path would return path for forwarding.

I wonder if this should be moved into the HeaderMap API. I.e. the HeaderMap API would provide two methods. NormalizedPath would return path normalized for matching and the Path would return path for forwarding.

I think we want to configure it in http connection manager.

I wonder if this should be moved into the HeaderMap API. I.e. the HeaderMap API would provide two methods. NormalizedPath would return path normalized for matching and the Path would return path for forwarding.

I see, I do plan to store both the path for filter use and path for forwarding in HeaderMap.

cc @yangminzhu

/retest

reopen


SmartNoise Synthesizers description example misses an import

In SmartNoise Synthesizers README (https://github.com/opendp/smartnoise-sdk/blob/main/synth/README.md), in MWEM, an import snsynth is missing.

Thanks much for reporting this; the docs have been updated to add the missing import!

Fixed!


Sample code failure

When I run the sample code
range x from -2 to 2 step 0.1
| extend sin = sin(x), cos = cos(x)
| extend x_sign = iif(x > 0, "x_pos", "x_neg")
| extend sum_sign = iif(sin + cos > 0, "sum_pos", "sum_neg")
| render linechart with  (ycolumns = sin, cos, series = x_sign, sum_sign)

I get

Failed to create visualization
We currently don't support 'linechart' visualization type.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 4f766314-2d79-147e-728c-cd661ab29939
Version Independent ID: 0f1b5a73-c5ac-1505-bc62-5361eeaedbb7
Content: render operator - Azure Data Explorer
Content Source: data-explorer/kusto/query/renderoperator.md
Service: data-explorer
GitHub Login: @orspod
Microsoft Alias: orspodek

@ElectricLlama  Thanks for the question! We are investigating and will update you shortly.

@ElectricLlama As per my repro, I am able to view the  'linechart' visualization type without any issue.

Could you please share more details on the above error message (Failed to create visualization
We currently don't support 'linechart' visualization type.) which you are experiencing?

Maybe it's because this is running in Application Insights. Shouldn't Kusto work the same everywhere?

OK I see this doco is specifically for Azure Data Explorer. It seems like Kusto has different sets of functionality in Data Explorer vs Application Insights. /Log Analytics.

Hi @ElectricLlama, Yes this document is specific to Azure Data Explorer. And yes, both are two distinct products and varies by functionality.
As the issue is not relevant to the document content in reference, we request you to please reach out in Microsoft Q&A forum where we have our engineers and other MVP's who will be happy to assist.
If you have a doc-feedback or a doc enhancement request for a particular document, please feel free to share it here.
We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply and reopen the issue. We will gladly continue the discussion.
Thank you


[FEATURE] allow specifying the index of cuda device and do not set globally torch.DoubleTensor as default

Hello
Thank you for open sourcing your models !
Minor suggestions I may think of:
setting torch.DoubleTensor as default in e.g.
https://github.com/oxpig/ImmuneBuilder/blob/main/ImmuneBuilder/ABodyBuilder2.py#L11
is a little unpractical when imported within other code bases that are very likely to use single precision
would you think it is safe otherwise to run your model in single precision or accuracy is impacted at inference time ?
it would be also practical to give an argument to the model init for choosing which cuda device to use instead of 0 by default
https://github.com/oxpig/ImmuneBuilder/blob/main/ImmuneBuilder/NanoBodyBuilder2.py#L90
e.g. device = torch.device(f"cuda:{cuda_device}" if (torch.cuda.is_available()) else "cpu")
We could make a PR if you want
Cheers

Hi @adrienchaton
I haven't tested running it with single precision after training so I am reluctant to make this the default. Feel free to swap to single precision and let me know how it goes.
If you could submit a PR for the second case that would be great.
All the best,
Brennan


[BUG] FDAR State is invalid, MAS cannot access webcam (NOT AN ARM CPU)

FDAR State: Invalid state in MAS
Windows 11
Processor	11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz   2.80 GHz
System type	64-bit operating system, x64-based processor
It's pretty much like the first issue posted on this repo but I use an x64 CPU, not ARM. I went through that thread and just to make sure allowed both DDLC and MASM through the firewall, though they weren't even listed there, meaning I had to manually add them. The only antivirus software I have is the standard windows defender. My webcam does work, I did check to make sure.
Might as well also mention that initially MASM wouldn't launch with the error of a missing python3.dll. I nabbed the .dll file from somewhere and put it in the same directory as the executable, after which it did execute, and we arrived at the problem of the webcam not being detected. Maybe it has something to do with that? Thought I'd mention it too. Thanks!

Hello!
It seems I forgot to include the extra DLL file python needs with the Windows binaries 😅
I'll let you know when I have fixed that!

Hello!
It seems I forgot to include the extra DLL file python needs with the Windows binaries 😅 I'll let you know when I have fixed that!

Ah understandable mistake. Can't wait to try it out then! Hopefully it'll detect the camera haha

Took a bit since I've been busy with other things, anyhow if you head to the latest pre-release here, I updated the Windows binaries to include the missing DLL, hopefully that helps!
If you come across other issues, like FDAR state still being reported as invalid, I ask for your patience as I'll be rewriting this mod once Monika After Story updates to newer Ren'Py version 🙂

Took a bit since I've been busy with other things, anyhow if you head to the latest pre-release here, I updated the Windows binaries to include the missing DLL, hopefully that helps!
If you come across other issues, like FDAR state still being reported as invalid, I ask for your patience as I'll be rewriting this mod once Monika After Story updates to newer Ren'Py version 🙂

@DatCaptainHorse Thanks for the fix! To update you, turns out that the status was invalid due to some misplacing of script files by me, so that's totally on me. My apologies for that. But yep now it works out of the box as long as you place the scripts and binaries in the right places, at least the webcam portion of your submod. I can't comment on the MIDI portion since I don't have a MIDI device that I could plug in. But other than that I'd say the windows binaries and scripts are working perfectly for the webcam stuff!


Add new edge image type support and validation, reenable vmware

This reverts commit 08e46cdb3ef761f2f4d6d75c97e90d786ca86432. VMWare is now a selectable upload type.

We are seeing some really bad CI flakes here apparently. They are not specific to this PR, and manual testing seems to work just fine. Considering the Firefox tests pass for both Fedora and RHEL, I vote in favor of merging as is, and doing having a discussion about the state of our CI next week to see how we can avoid a situation like this in the future.


FFmpeg / build improvements

added PostBuild target to copy ffmpeg.exe to the build folder;
updated the installer file to remove ffmpeg.exe as it is picked from the build folder instead;
both InstallerOutput and FFmpeg folders are now created on git checkout, but their content is ignored by the source control.

This completes the work done in https://github.com/shaked6540/YoutubePlaylistDownloader/pull/266.
Now there is a single source for ffmpeg.exe, both for the installer and for when you run the app from VS. Also, you don't have to manually copy ffmpeg.exe into the build folder anymore.

Might be worth to include the ffmpeg exe itself too, so that everyone is on the same page

To be honest I don't like the idea to include that binary in the source control. But maybe we could update the README.md file instead with instructions from where ffmpeg.exe can be obtained?

I guess we can include a link to the ffmpeg version we're using, the only problem with that would be that its not guaranteed to always be available, and in the future there might be breaking changes in the latest versions of ffmpeg. But since its very unlikely to happen, we can include a link to ffmpeg in the README.md file.
I usually take my builds from https://github.com/sudo-nautilus/FFmpeg-Builds-Win32/releases because its 32 bit, meaning it will work on all machines. The problem with that is that repository is mostly dead and outdated.
Switching to 64 bit will cause some problems to some users. I used to include the 64 bit version but a user came to me with a problem that was solved by switching to 32 bit. (His OS was 32 bit so naturally the 64 bit didn't work)
Lets include both the 32 bit release of ffmpeg from the repository I linked and the latest ffmpeg master build from https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z (which is 64 bit)
Please update the readme.md to include the instructions on downloading/copying ffmpeg to the correct directory

I use this one https://github.com/BtbN/FFmpeg-Builds. I see that sudo-nautilus/FFmpeg-Builds-Win32 uses BtbN:master also. Security-wise I don't trust it 100%. This is why I don't want to put it into the repository.

I hadn't had a chance to work on this yet. Maybe in the following days.

No rush, its ok even it takes a couple of months. The PR is not going anywhere


Add support for 4 part version numbers

Recently we shipped azdata with a four part version number for the first time for SQL 2019 GDR1 release. This aligns with the version number scheme in use by SQL Server where the 4th part (rightmost part) corresponds to the build number. Unfortunately, that version of azdata was not installable by ads because the version does not conform to the SymVer version that ADS uses to validate version number.
This change adds a SymVerProxy object that translates the SQL compliant 4 part version number to SymVer compliant version number so that the installation of the GDR1 azdata can be performed from ADS.
This PR fixes #8841

@ranasaria - What's the status of this? And what's the severity of this issue?

I will finish it this week upon my return, sorry having to take sick days delayed completion of this.
On Feb 8, 2020, at 3:31 AM, Charles Gagnon <notifications<EMAIL_ADDRESS>wrote:
@ranasariahttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Franasaria&data=02|01|Arvind.Ranasaria%40microsoft.com|677263aff5914fad680208d7ac194d15|72f988bf86f141af91ab2d7cd011db47|1|0|637167096972720515&sdata=Ux8XElYSW8Dh3OW%2FbrLP3xFoYWpFlwBjmslE%2Fm9WuUs%3D&reserved=0 - What's the status of this? And what's the severity of this issue?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fazuredatastudio%2Fpull%2F8925%3Femail_source%3Dnotifications%26email_token%3DAJ5JMVUQHXFIZBM3BYHBK6DRBXK4BA5CNFSM4KJ6XL7KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELEY6RI%23issuecomment-583634757&data=02|01|Arvind.Ranasaria%40microsoft.com|677263aff5914fad680208d7ac194d15|72f988bf86f141af91ab2d7cd011db47|1|0|637167096972730465&sdata=9cah31MhiUMwtetVmJxtkkUhkKmaD1BOm5fX%2FkQLp%2Bs%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAJ5JMVWWV2YOMAGOFVYKCRDRBXK4BANCNFSM4KJ6XL7A&data=02|01|Arvind.Ranasaria%40microsoft.com|677263aff5914fad680208d7ac194d15|72f988bf86f141af91ab2d7cd011db47|1|0|637167096972730465&sdata=G5gZ72jci9tt1eX4DnS7KPHESuIo4u4yQlwsnk%2Bm9nA%3D&reserved=0.

The pending check is the PR validation pipeline which seems to be stuck after completion.


User docs 1

LGTM! I might add some sections tomorrow so it's less wall-of-text, but this explains a bunch


Is it ok if I publish a NuGet package?

Hi folks, I am happily using picojson and loving it!
My current project heavily uses NuGet packages, so here I am asking: is it ok if I package picojson and publish it to nuget.org?
Of course, the package metadata would point to this repo, the existing readme/license, and have @kazuho as owner.

You can find the NuGet pkg at nuget.org public repo. As you can see in the screenshot below, all metadata points to the official repo, the official readme/license, and have @kazuho as owner:

All the files used to create the NuGet pkg are available in this repo, including the link to the public Azure Pipeline used.
I hope this contribution is helpful! If the same is undesired, please let me know and I will unlist the package.


How do you switch the main language?

I see all of this code in the .bst file for changing the main language of the document. Where is the initial variable set? How can I change the main language to English?

\documentclass[degree=master, language=english]{thuthesis}
The .bst files are used to format the bibliography with BibTeX.

Thank you very much! Should have guessed that.


An AADSTS1000031 error

Thank you for writing a great script.
An AADSTS1000031 error is recorded when inviting a user on the resource tenant side, even though the migrating application exists on both the Resource Tenant and Target Tenant.
I think that the 1000031 error itself is an error that is logged when the application does not exist in the target or resource tenant.
As shown in the screenshot below, we can register the application for migration in each tenant by executing Admin Consent as a global administrator from the Admin Consent URLs for the Target and Resource tenants output in PowerShell.

In this case, since the application exists, I thought there would be no error when I invite a user from the Resource tenant to the Target tenant as a guest user, but in fact, an error was recorded in the URL as shown in the screenshot below.

However, the error was recorded in the URL as shown in the screenshot below. In fact, the mailbox migration was completed even if this error was ignored, so I think it is appropriate that the 1000031 error is not output if the migration application is registered in both tenants.

Good morning Shinya,
We are aware of this happening when using the email acceptance and in the message itself it states that you may hit this error and if so, to copy and paste the URL in the browser.
Hopefully in the future we will get a permanent solution for this.
Thanks,
Roman
From: Shinya Yamaguchi @.>
Sent: Friday, April 2, 2021 4:17 AM
To: microsoft/cross-tenant @.>
Cc: Subscribed @.***>
Subject: [microsoft/cross-tenant] An AADSTS1000031 error (#41)
Thank you for writing a great script.
An AADSTS1000031 error is recorded when inviting a user on the resource tenant side, even though the migrating application exists on both the Resource Tenant and Target Tenant.
I think that the 1000031 error itself is an error that is logged when the application does not exist in the target or resource tenant.
As shown in the screenshot below, we can register the application for migration in each tenant by executing Admin Consent as a global administrator from the Admin Consent URLs for the Target and Resource tenants output in PowerShell.
[image]https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F41740353%2F113411241-396fe280-93f0-11eb-956f-a58ad08bc7b6.png&data=04|01|Roman.Powell%40microsoft.com|1f03e095e1154af18e1608d8f5c8e171|72f988bf86f141af91ab2d7cd011db47|0|0|637529590436166653|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=ubdWeLjDRhWHDATktzRrvdDZQT%2BLNVMqp9%2FgUnHn7Ow%3D&reserved=0
In this case, since the application exists, I thought there would be no error when I invite a user from the Resource tenant to the Target tenant as a guest user, but in fact, an error was recorded in the URL as shown in the screenshot below.
[image]https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F41740353%2F113411292-599fa180-93f0-11eb-9aff-a4f2a3ba1401.png&data=04|01|Roman.Powell%40microsoft.com|1f03e095e1154af18e1608d8f5c8e171|72f988bf86f141af91ab2d7cd011db47|0|0|637529590436176649|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=zai1%2FEobpROf6uj1v9jzLSMJToBgLQTX8enhoHi5hXs%3D&reserved=0
However, the error was recorded in the URL as shown in the screenshot below. In fact, the mailbox migration was completed even if this error was ignored, so I think it is appropriate that the 1000031 error is not output if the migration application is registered in both tenants.

You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fcross-tenant%2Fissues%2F41&data=04|01|Roman.Powell%40microsoft.com|1f03e095e1154af18e1608d8f5c8e171|72f988bf86f141af91ab2d7cd011db47|0|0|637529590436176649|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=vb7oKFgNpox%2FQzEQRO%2FaxiQvhFy2Agnr7F3OhinqvAI%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAPUHY6FRLV6AA6G2B4Z2JLLTGWRT5ANCNFSM42IW6HPQ&data=04|01|Roman.Powell%40microsoft.com|1f03e095e1154af18e1608d8f5c8e171|72f988bf86f141af91ab2d7cd011db47|0|0|637529590436186637|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=uM1putBLT5phrfaUCf5GPepBc%2F5xAiN0JZEB6%2FWsz9g%3D&reserved=0.

Thank you for your time and comments.
I understand that this issue itself is recognized as a known issue.
If the same event occurs , we will ignore it as long as the migrating application is registered from the Admin Consent URL on both Resource and Target Azure AD tenants.
We hope that this output will be fixed in the future.


how can I get more accurate timestamps?

ex. 3 decimal places

@ddoron9 , you can add the option word timestamps=True to get more precise timestamps, but the maximum precision is only 2 decimal places.


Utilise standard KernelFunctions.jl test for Separable

Isn't separable just a specific instance of  KernelTensorProduct?


Response.notFound() and 404, logging

In my generated test project I have commented out the .pipe(new Authorizer(authenticationServer)) on the line under .route("/users/[:id]") (in my lib/src/aque_test_sink.dart) so I won't get the {"error":"No authorization header."} when I try localhost:8000/users. Now I just get an empty page instead. I would have expected a 404. Do I have to provide something for a Response.notFound() to give me a visible 404 page?
What's the easiest way to insert logging lines into a file like lib/src/controller/user_controller.dart?

Aqueduct doesn't provide any behavior for HTML templating. There are other tools that can be used with Aqueduct to provide that behavior.
If you want an endpoint to return HTML, you can configure that by setting the content type of the response (or in the case of an HTTPController, setting the responseContentType). For a router, you can set the unhandledRequestController property to a closure that responds to the request with a 404 and html body:
router.unhandledRequestController = (req) {
  req.respond(new Response.notFound(headers: {"Content-Type" : "application/html"}, body: htmlString));
};

Any RequestController subclass has a logger property that can be used to log:
logger.info("A log statement in a controller");

I didn't ask for HTML templating. I just wanted to produce a very simple HTML response. This far I have not succeeded in doing that. A tutorial example on how to do this would help me. It would also be nice to deliver static HTML files. If other tools are needed for this kind of behavior, it would be nice if the docs had some suggestions.

In the router.unhandledRequestController above, I guess it should have been {"Content-Type" : "text/html"}.


Sharing value generated by the DAO infographic

https://www.figma.com/file/5JMAyjRhvxREqXGHJTt6jN/Flows-and-organization-PUBLIC?node-id=64%3A35

added


Not getting any data in Grafana

What did you do?
Installed via the quickstart in AKS
Did you expect to see some different?
All the pods came up normally after running the create then apply command on the manifest folder.
Environment
K8s in AKS 1.13
Not getting any data on any of the default graphs

Could you check whether metrics are successfully collected by checking the /targets page on the Prometheus UI?

kubectl --namespace monitoring port-forward svc/prometheus-k8s 9090
No page can be displayed. That would be a problem :)

Kubernetes / Use Method / Cluster and Kubernetes / Use Method / Pods - both work but none of the other graphs work

The kubelet targets are where most of the dashboards data comes from. What’s the error the UI is saying?


checking schema version

Add checking of schema version to  refreshTopology so that topology does not need to be updated if nothing changed.

peerSchemasStmt = "SELECT schema_version FROM system.peers"
localSchemaStmt = "SELECT schema_version FROM system.local WHERE key='local'"

This could be useful.


[BUG] Creating new clusters with v2.6.10 with private credentials fails to pull rke-tools

Rancher Server Setup

Rancher version: v2.6.10 (and likely v2.7.1)
Installation option (Docker install/Helm Chart): Docker Install
Proxy/Cert Details: N/A

Information about the Cluster

Kubernetes version: 1.24.9
Cluster Type (Local/Downstream): Downstream, Custom - RKE1 on AWS

User Information

What is the role of the user logged in? Admin

If custom, define the set of permissions:

Describe the bug
Creating an RKE1 cluster with privateRegistries set with a username and password fails to start due to rke-tools not being able to be pulled:
To Reproduce

Create a private registry with copies of the Rancher/RKE images
Create a cluster with the following configuration

rancherKubernetesEngineConfig:
  privateRegistries:
    - url: my.registry:5000
      username: username
      password: password
      is_default: true

Add a new worker node to the cluster

Result
Cluster creation stalls due to the following error:
[Failed to pull image [<IP_ADDRESS>:5000/rancher/rke-tools:v0.1.88] on host [<IP_ADDRESS>]: Error response from daemon: Get http://<IP_ADDRESS>:5000/v2/rancher/rke-tools/manifests/v0.1.88: no basic auth credentials]

The cluster configuration ends up like:
apiVersion: management.cattle.io/v3
kind: Cluster
metadata:
  annotations:
    authz.management.cattle.io/creator-role-bindings: '{"created":["cluster-owner"],"required":["cluster-owner"]}'
    field.cattle.io/creatorId: user-48857
    lifecycle.cattle.io/create.cluster-agent-controller-cleanup: "true"
    lifecycle.cattle.io/create.cluster-scoped-gc: "true"
    lifecycle.cattle.io/create.mgmt-cluster-rbac-remove: "true"
  creationTimestamp: "2023-01-26T01:26:38Z"
  finalizers:
  - wrangler.cattle.io/mgmt-cluster-remove
  - controller.cattle.io/cluster-agent-controller-cleanup
  - controller.cattle.io/cluster-scoped-gc
  - controller.cattle.io/cluster-provisioner-controller
  - controller.cattle.io/mgmt-cluster-rbac-remove
  generateName: c-
  generation: 19
  labels:
    cattle.io/creator: norman
  name: c-nn8jn
  resourceVersion: "38205"
  uid: 79e0863a-cda5-49a1-aa0d-7c8b24039482
spec:
  agentImageOverride: ""
  answers: {}
  clusterSecrets:
    privateRegistrySecret: cluster-registry-h9vgz
  description: ""
  desiredAgentImage: ""
  desiredAuthImage: ""
  displayName: ...
  dockerRootDir: /var/lib/docker
  enableClusterAlerting: false
  enableClusterMonitoring: false
  enableNetworkPolicy: false
  fleetWorkspaceName: fleet-default
  internal: false
  localClusterAuthEndpoint:
    enabled: false
  rancherKubernetesEngineConfig:
    addonJobTimeout: 45
    authentication:
      strategy: x509
    authorization: {}
    bastionHost: {}
    cloudProvider: {}
    enableCriDockerd: true
    ignoreDockerVersion: true
    ingress:
      defaultBackend: true
      defaultIngressClass: true
      provider: none
    kubernetesVersion: v1.24.9-rancher1-1
    monitoring:
      provider: metrics-server
      replicas: 1
    network:
      options:
        flannelBackendType: vxlan
      plugin: canal
    privateRegistries:
    - isDefault: true
      url: <IP_ADDRESS>:5000
      user: myusername
    restore: {}
    rotateEncryptionKey: false
    services:
      etcd:
        backupConfig:
          enabled: true
          intervalHours: 12
          retention: 6
          s3BackupConfig: null
        creation: 12h
        extraArgs:
          election-timeout: "5000"
          heartbeat-interval: "500"
        retention: 72h
        snapshot: false
      kubeApi:
        extraArgs:
          service-account-issuer: kubernetes.default.svc
          service-account-signing-key-file: /etc/kubernetes/ssl/kube-service-account-token-key.pem
        serviceClusterIpRange: <IP_ADDRESS>/16
        serviceNodePortRange: 30000-32767
      kubeController:
        clusterCidr: <IP_ADDRESS>/16
        serviceClusterIpRange: <IP_ADDRESS>/16
      kubelet:
        clusterDnsServer: <IP_ADDRESS>
        clusterDomain: cluster.local
        extraBinds:
        - ...
        failSwapOn: true
      kubeproxy: {}
      scheduler: {}
    sshAgentAuth: false
    systemImages: {}
    upgradeStrategy:
      drain: false
      maxUnavailableControlplane: "1"
      maxUnavailableWorker: 10%
  windowsPreferedCluster: false
status:
  agentImage: ""
  aksStatus:
    privateRequiresTunnel: null
    rbacEnabled: null
    upstreamSpec: null
  allocatable:
    cpu: "0"
    memory: "0"
    pods: "0"
  appliedEnableNetworkPolicy: false
  appliedPodSecurityPolicyTemplateId: ""
  appliedSpec:
    agentImageOverride: ""
    answers: {}
    clusterSecrets: {}
    description: ""
    desiredAgentImage: ""
    desiredAuthImage: ""
    displayName: ""
    enableClusterAlerting: false
    enableClusterMonitoring: false
    enableNetworkPolicy: null
    internal: false
    localClusterAuthEndpoint:
      enabled: false
    windowsPreferedCluster: false
  authImage: ""
  capabilities:
    ingressCapabilities:
    - ingressProvider: none
    loadBalancerCapabilities: {}
    nodePortRange: 30000-32767
  capacity:
    cpu: "0"
    memory: "0"
    pods: "0"
  conditions:
  - status: "True"
    type: Pending
  - lastUpdateTime: "2023-01-26T01:26:41Z"
    message: waiting for etcd, controlplane and worker nodes to be registered
    reason: Provisioning
    status: Unknown
    type: Provisioned
  - lastUpdateTime: "2023-01-26T01:26:41Z"
    message: Waiting for API to be available
    status: Unknown
    type: Waiting
  - lastUpdateTime: "2023-01-26T01:26:38Z"
    status: "True"
    type: BackingNamespaceCreated
  - lastUpdateTime: "2023-01-26T01:26:39Z"
    status: "True"
    type: DefaultProjectCreated
  - lastUpdateTime: "2023-01-26T01:26:39Z"
    status: "True"
    type: SystemProjectCreated
  - lastUpdateTime: "2023-01-26T01:26:39Z"
    status: "True"
    type: InitialRolesPopulated
  - lastUpdateTime: "2023-01-26T01:26:39Z"
    status: "False"
    type: Connected
  - lastUpdateTime: "2023-01-26T01:26:40Z"
    status: "True"
    type: CreatorMadeOwner
  - lastUpdateTime: "2023-01-26T01:26:41Z"
    status: "True"
    type: NoDiskPressure
  - lastUpdateTime: "2023-01-26T01:26:41Z"
    status: "True"
    type: NoMemoryPressure
  - lastUpdateTime: "2023-01-26T01:26:41Z"
    status: "True"
    type: SecretsMigrated
  - lastUpdateTime: "2023-01-26T01:26:41Z"
    status: "True"
    type: ServiceAccountSecretsMigrated
  - lastUpdateTime: "2023-01-26T01:26:41Z"
    status: "True"
    type: RKESecretsMigrated
  driver: rancherKubernetesEngine
  eksStatus:
    managedLaunchTemplateID: ""
    managedLaunchTemplateVersions: null
    privateRequiresTunnel: null
    securityGroups: null
    subnets: null
    upstreamSpec: null
    virtualNetwork: ""
  gkeStatus:
    privateRequiresTunnel: null
    upstreamSpec: null
  limits:
    cpu: "0"
    memory: "0"
    pods: "0"
  nodeCount: 1
  provider: ""
  requested:
    cpu: "0"
    memory: "0"
    pods: "0"

With the referenced global secret empty:
apiVersion: v1
data:
  .dockerconfigjson: eyJhdXRocyI6e319
kind: Secret
metadata:
  creationTimestamp: "2023-01-26T01:26:41Z"
  generateName: cluster-registry-
  labels:
    cattle.io/creator: norman
  name: cluster-registry-h9vgz
  namespace: cattle-global-data
  ownerReferences:
  - apiVersion: management.cattle.io/v3
    kind: Cluster
    name: c-nn8jn
    uid: 79e0863a-cda5-49a1-aa0d-7c8b24039482
  resourceVersion: "37536"
  uid: 2175a6cf-9590-4c2a-9a44-917f01649541
type: kubernetes.io/dockerconfigjson

And I can manually pull the image on the node itself:
[root@ip-10-0-1-8 ~]# docker pull <IP_ADDRESS>:5000/rancher/rke-tools:v0.1.88
v0.1.88: Pulling from rancher/rke-tools
Digest: sha256:6affad605d2a52729a31ac40599fd9d99daae4f2987b6db88a1db9a7cb2d690c
Status: Image is up to date for <IP_ADDRESS>:5000/rancher/rke-tools:v0.1.88
<IP_ADDRESS>:5000/rancher/rke-tools:v0.1.88

Expected Result
Successful cluster creation
Screenshots
N/A
Additional context
I believe https://github.com/rancher/rancher/commit/025cb5f6011775c1c0b184e06ddaf33019a7bdb1 (and related commits) added in v2.6.10 only to be causing the issue, though I'm not positive about that.

cc @jakefhyde @KevinJoiner

/backport v2.6.11

/backport v2.6.11

Root Cause
There is a race condition where if the cluster is being updated while secrets migration is in progress, the cluster update will fail, which will cause the existing secret to be deleted. On the next attempted secrets migration, the secret will be recreated, but as the cluster has already been cleaned up, the sensitive information in the secret is lost. Although this is a race condition, the likelihood is extremely high given the number of controllers that respond to the cluster's creation/update events.
Affected Clusters
Custom & Node Driver RKE1 clusters provisioned on v2.6.10 & v2.7.1.
Workaround
In order to work around loss of data within these secrets, first create the cluster, and add the sensitive information after the SecretsMigrated and RKESecretsMigrated conditions are true.

/backport v2.6.11

/backport v2.6.11

Testing against v2.7.1 and v2.7.1-rc1, I'm seeing the behavior outlined in the issue description. Please see details below:
ENVIRONMENT DETAILS

Rancher install: Docker
Rancher version: v2.7.1, v2.7.1-rc1
Browser: Chrome

TEST RESULT

Scenario
Test Case
Result

1
Setup Rancher v2.7.1, provision a downstream RKE1 cluster using ECR and validate that the cluster is successfully deployed
:x:

2
Setup Rancher v2.7.1, provision a downstream RKE1 cluster using ECR, set ECR as an insecure registry in the RKE1 node template and validate that the cluster is successfully deployed
:x:

3
Setup Rancher v2.7.1-rc1, provision a downstream RKE1 cluster using ECR and validate that the cluster is successfully deployed
:x:

4
Setup Rancher v2.7.1-rc1, provision a downstream RKE1 cluster using ECR, set ECR as an insecure registry in the RKE1 node template and validate that the cluster is successfully deployed
:x:

Scenario 1

In a separate client machine, logged into my ECR and ensured that I pushed local v2.7.1 images into my ECR.
Once done, navigated to Rancher > Cluster Management > Create.
While preparing to provision a RKE1 downstream cluster, i configured my ECR as my private registry.

This included utilizing the ecrCredentialPlugin and extra_env as defined in this documentation.

During cluster provisioning, each node hit the following error: Unable to find image '.../rancher/rancher-agent-v2.7.1' locally docker: Error response from daemon...

Validated that this exact image exists inside of my ECR and that I can pull it locally in my client machine.

Navigated over to Cluster Explorer > local > kubectl shell.
Inside of the kubectl shell, ran command kubectl get secret cluster-registry-... -n cattle-global-data -o yaml and received the following result:

apiVersion: v1
data:
  .dockerconfigjson: <retracted>
kind: Secret
metadata:
  creationTimestamp: "2023-02-08T22:16:28Z"
  generateName: cluster-registry-
  labels:
    cattle.io/creator: norman
  name: cluster-registry-d6lqs
  namespace: cattle-global-data
  ownerReferences:
  - apiVersion: management.cattle.io/v3
    kind: Cluster
    name: c-2vtc6
    uid: <retracted>
  resourceVersion: "4644"
  uid: <retracted>
type: kubernetes.io/dockerconfigjson

Scenario 2

Repeated scenario 1 but during RKE1 node template, ensured that the ECR was set as an insecure private registry.
The results, however, remained the same as scenario 1.

Scenario 3

Repeated scenario 1, but setup Rancher v2.7.1-rc1 instead. This was as the original testing utilized this tag where the issue was not previously noted.

Scenario 4

Repeated scenario 2, but setup Rancher v2.7.1-rc1 instead. This was as the original testing utilized this tag where the issue was not previously noted.

Please include these Test cases to validate after the fix is merged:
Fresh install usecases on 2.7-head

Deploy an RKE1 cluster with Private Registry with Auth enabled, verify the cluster comes up successfully. Edit the cluster, update k8s version to the latest. Verify the upgrade goes through and cluster is back up Active. Verify contents of secret on the local cluster, and it has the expected data.
Deploy an RKE1 cluster with Private Registry with no Auth , verify the cluster comes up successfully. Edit the cluster, update k8s version to the latest. Verify the upgrade goes through and cluster is back up Active.
Deploy an RKE1 cluster with Private Registry - ECR, verify the cluster comes up successfully. Edit the cluster, update k8s version to the latest. Verify the upgrade goes through and cluster is back up Active.
Deploy an RKE1 cluster with no Private Registry (disabled), verify the cluster comes up successfully.

QA TEST PLAN
Scenarios

Scenario
Test Case

1
Setup Rancher v2.6-head, provision a downstream RKE1 cluster with ECR as the private registry, set private registry as an insecure registry in the RKE1 node template, validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, delete the cluster and ensure the secret gets deleted

2
Setup Rancher v2.6-head, provision a downstream RKE1 cluster with ECR as the private registry,  validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, delete the cluster and ensure the secret gets deleted

3
Setup Rancher v2.6-head, provision a downstream RKE1 cluster with an auth-enabled private registry, set private registry as an insecure registry in the RKE1 node template, validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data and delete the cluster and ensure the secret gets deleted

4
Setup Rancher v2.6-head, provision a downstream RKE1 cluster with a non-auth private registry,  validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, delete the cluster and ensure the secret gets deleted

5
Setup Rancher v2.6-head, provision a downstream RKE1 cluster with ECR as the private registry with second-highest K8s version,  validate the cluster successfully deploys, validate hat the cluster secret is not empty and contains expected data, upgrade the K8s version, validate the cluster secret still is not empty, delete the cluster and ensure the secret gets deleted

6
Setup Rancher v2.6-head, provision a downstream RKE1 cluster with no private registry setup, validate that the cluster successfully deploys

We need a Rancher RC to test this

can be validated in rancher v2.7.2-rc3

Tested this issue against v2.7.2-rc3. Please see details below:
ENVIRONMENT DETAILS

Rancher install: Docker
Rancher version: v2.7.2-rc3
Browser: Chrome

TEST RESULTS

Scenario
Test Case
Result

1
Setup Rancher v2.7.2-rc3, provision a downstream RKE1 node driver cluster with ECR as the private registry,  validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, delete the cluster and ensure the secret gets deleted
:x:

2
Setup Rancher v2.7.2-rc3, provision a downstream RKE1 custom cluster with an auth-enabled private registry,  validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, delete the cluster and ensure the secret gets deleted
:white_check_mark:

3
Setup Rancher v2.7.2-rc3, provision a downstream RKE1 node driver cluster with a non-auth private registry,  validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, delete the cluster and ensure the secret gets deleted
:white_check_mark:

4
Set system default registry to use a non-auth-enabled private registry, provision a downstream RKE1 node driver cluster, validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, delete the cluster and ensure the secret gets deleted
:white_check_mark:

5
Setup Rancher v2.7.2-rc3, provision a downstream RKE1 node driver cluster with ECR as the private registry with second-highest K8s version,  validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, upgrade the K8s version, validate the cluster secret still is not empty, delete the cluster and ensure the secret gets deleted
:white_check_mark:

6
Provision RKE1 cluster with ECR as the private registry, validate that it deploys, upgrade Rancher, upgrade K8s version, validate cluster secret is not empty and add a worker node
:x:

7
Provision RKE1 cluster with an auth-enabled private registry, validate that it deploys, upgrade Rancher, upgrade K8s version, validate cluster secret is not empty and add a worker node
:white_check_mark:

8
Provision RKE1 cluster with an non auth-enabled private registry, validate that it deploys, upgrade Rancher, upgrade K8s version, validate cluster secret is not empty and add a worker node
:white_check_mark:

9
Set system default registry to use a non auth-enabled private registry, provision RKE1 cluster, validate that it deploys, upgrade Rancher, upgrade K8s version, validate cluster secret is not empty and add a worker node
:white_check_mark:

10
Provision RKE1 cluster with no private registry enabled, validate that it deploys, upgrade Rancher, upgrade K8s version and add a worker node
:white_check_mark:

Scenario 1

As a standard user, provisioned a downstream RKE1 node driver cluster with the following configurations:

K8s version → v1.23
cri-dockerd → disabled
Private registry → ECR

Unable to successfully provision the cluster as I see the following error message during cluster provisioning: [controlPlane] Failed to upgrade Control Plane: [[host ... not ready]]
Viewed the cluster's YAML and validated that no sensitive data is exposed. Additionally, validated the following parameters are seen:

privateRegistryECRSecret , kubeletEnvSecret , privateRegistrySecret. I expect there to be privateRegistryECRSecret and kubeletEnvSecret, but it is not there.

Navigated to top-left menu > RKE1 cluster. Validated that the images pulled are from the private registry and are Active.
Logged out and logged back into Rancher as an admin user.
Navigated to top-left dropdown menu > local cluster > Storage > Secrets.
Scrolled down to the cattle-global-data namespace and validate that cluster-registry-... is present and has the Data column populated with the registry name.
Clicked kubectl shell and ran command kubectl get secret cluster-registry-... -n cattle-global-data -o yaml  and validated that the secret was populated with data.
Decoded the .dockerconfigjson value and validated that the auth field contains the private registry credentials.
Navigate back to Cluster Management > RKE1 cluster.
Deleted the cluster and validate that the cluster-registry-... is successfully removed as well from the local cluster.

Scenario 2

As a standard user, provisioned a downstream RKE1 custom driver cluster with the following configurations:

K8s version -> highest version
Private registry -> auth-enabled

Validated that that the cluster and nodes came up as Active in Cluster Management and Cluster Explorer.
Viewed the cluster's YAML and validated that no sensitive data is exposed. Additionally, validated the following parameters are seen:

privateRegistrySecret

Validated that all of the pods in the System project page came up as Active.
Repeated scenario 1 steps 6-10 and received the same successful results.
Back as a standard user, successfully added a worker node and validated that is is Active in Cluster Management and Cluster Explorer.
Repeated scenario 1 steps 6-10 and received the same successful results.

Scenario 3

Repeated scenario 2 steps, but using a non-auth private registry and a node driver instead; validated all steps were successful just as mentioned in scenario 2.

With the exception of the cluster secret containing no data. As this is a non-auth private registry, this is expected to be empty as there are no credentials to be decoded.

Scenario 4

As an admin user, navigated to top-left menu > Global Settings > Settings.
Updated system-default-registry to use a non auth-enabled private registry.
Logged out and logged back in as a standard user.
Provisioned a downstream node driver cluster with no private registry configured as it already is the system-default-registry set.
Validated that the nodes and cluster come up as Active in Cluster Management and Cluster Explorer.
Repeated scenario 1 steps 6-10 with the same successful results, with the exception of the cluster secret containing no data.

As this is a non-auth private registry, this is expected to be empty as there are no credentials to be decoded.
Additionally, validated that removing the system-default-registry leaves the cluster in Active, but uses default Docker images instead of the specified non auth-enabled private registry. Likewise, placing the system-default-registry back to the non auth-enabled private registry reverses this change while keeping the cluster Active.

Back as a standard user, successfully added a worker node and validated that is is Active in Cluster Management and Cluster Explorer.
Repeated scenario 1 steps 6-10 and received the same successful results.

Scenario 5

As a standard user, provision a downstream RKE1 node driver cluster with the following configurations:

K8s version → highest available version

Validated that that the cluster and nodes come up as Active in Cluster Management and Cluster Explorer.
Viewed the cluster's YAML and validate that no sensitive data is exposed.
Validated that all of the pods in the System project page come up as Active.
Navigated back to Cluster Management > RKE1 cluster.
Scaled the worker node pool from 1 → 2. Validated that the worker node is added and is Active.

Scenario 6

Setup Rancher v2.7.0 and logged in as a standard user.
Provisioned a downstream RKE1 node driver cluster with the following configurations:

K8s version → v1.23
cri-dockerd → disabled
Private registry → ECR

Unable to successfully provision the cluster as I see the following error message during cluster provisioning: [controlPlane] Failed to upgrade Control Plane: [[host ... not ready]]
Viewed the cluster's YAML and validated that no sensitive data is exposed. Additionally, validated the following parameters are seen:

privateRegistryECRSecret , kubeletEnvSecret , privateRegistrySecret. I expect there to be privateRegistryECRSecret and kubeletEnvSecret, but it is not there.

Validated that all of the pods in the System project page came up as Active.
Navigated to top-left menu > RKE1 cluster. Validated that the images pulled are from the private registry and are Active.
Logged out and logged back into Rancher as an admin user.
Navigated to top-left dropdown menu > local cluster > Storage > Secrets.
Scrolled down to the cattle-global-data namespace and validate that cluster-registry-... is present and has the Data column populated with the registry name.
Clicked kubectl shell and ran command `kubectl get secret cluster-registry-... -n cattle-global-data -o yaml  and validated that the secret is populated with data.
Upgraded Rancher v2.7.0 → v2.7.2-rc3.
Validated that the cluster and nodes do not auto-upgrade the K8s version, but still does not get past the error message during initial provisioning.
Repeated steps 5-9 with the same successful results.

Scenario 7

Setup Rancher v2.7.0 and logged in as a standard user.
Provisioned a downstream RKE1 node driver cluster with the following configurations:

K8s version -> second highest version
Private registry -> auth-enabled

Validated that that the cluster and nodes came up as Active in Cluster Management and Cluster Explorer.
Viewed the cluster's YAML and validated that no sensitive data is exposed. Additionally, validated the following parameters are seen:

privateRegistrySecret

Validated that all of the pods in the System project page came up as Active.
Navigated to top-left menu > RKE1 cluster. Validated that the images pulled are from the private registry and are Active.
Logged out and logged back into Rancher as an admin user.
Navigated to top-left dropdown menu > local cluster > Storage > Secrets.
Scrolled down to the cattle-global-data namespace and validate that cluster-registry-... is present and has the Data column populated with the registry name.
Clicked kubectl shell and ran command kubectl get secret cluster-registry-... -n cattle-global-data -o yaml and validated that the secret is populated with data.
Upgraded Rancher v2.7.0 → v2.7.0-rc3.
Validated that the cluster and nodes do not auto-upgrade the K8s version and remained Active in Cluster Management and Cluster Explorer.
Repeated steps 5-10 with the same successful results.
Navigated back to Cluster Management and upgraded the cluster's K8s version to the highest available.
Validated that the cluster and nodes upgrade the K8s version and are in a state of Active.
Repeated steps 5-10 with the same successful results.
Navigated back to Cluster Management and scale the worker node pool from 1 → 2. Validated that the worker node is added and is Active.
Repeated steps 5-10 with the same successful results.
Deleted the cluster and validate that the cluster-registry-... is successfully removed as well from the local cluster.

Scenario 8

Repeated scenario 7, but using a non-auth private registry instead.
Validated all steps were successful just as mentioned in scenario 6.

With the exception of the cluster secret containing no data. As this is a non-auth private registry, this is expected to be empty as there are no credentials to be decoded.

Scenario 9

As an admin user, navigated to top-left menu > Global Settings > Settings.
Updated system-default-registry to use a non auth-enabled private registry.
Logged out and logged back in as a standard user.
Repeated scenario 7, but with no private registry configured as the system-default-registry is already set.
Validated that all steps were successful just as mentioned in scenario 6.

As this is a non-auth private registry, this is expected to be empty as there are no credentials to be decoded.
Additionally, validated that removing the system-default-registry leaves the cluster in Active, but uses default Docker images instead of the specified non auth-enabled private registry. Likewise, placing the system-default-registry back to the non auth-enabled private registry reverses this change while keeping the cluster Active.

Scenario 10

Setup Rancher v2.7.0 and logged in as a standard user.
Provisioned a downstream RKE1 node driver cluster with the following configurations:

K8s version → second highest version

Validated that that the cluster and nodes came up as Active in Cluster Management and Cluster Explorer.
Viewed the cluster's YAML and the following is seen:

privateRegistryECRSecret , kubeletEnvSecret , privateRegistrySecret

Validated that all of the pods in the System project page came up as Active.
Upgraded Rancher v2.7.0 → v2.7.2-rc3.
Validated that the cluster and nodes do not auto-upgrade the K8s version and remained Active in Cluster Management and Cluster Explorer.
Navigated back to Cluster Management and upgraded the cluster's K8s version to the highest available.
Validated that the cluster and nodes upgrade the K8s version and are in a state of Active.
Navigated back to Cluster Management and scale the worker node pool from 1 → 2. Validated that the worker node is added and is Active.

I used the cursed words "fix" in a PR linked to this issue and Zube is losing it

Waiting for a new Rancher RC to test this issue.

Should be available to test in v2.7.2-rc4.

Validated this is addressed on v2.67.2-rc4. Please see details below:
ENVIRONMENT DETAILS

Rancher install: Docker
Rancher version: v2.7.2-rc4
Browser: Chrome

TEST RESULTS

Scenario
Test Case
Result

1
Setup Rancher v2.7.2-rc4, provision a downstream RKE1 node driver cluster with ECR as the private registry,  validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, delete the cluster and ensure the secret gets deleted
:white_check_mark:

2
Setup Rancher v2.7.2-rc4, provision a downstream RKE1 custom cluster with an auth-enabled private registry,  validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, delete the cluster and ensure the secret gets deleted
:white_check_mark:

3
Setup Rancher v2.7.2-rc4, provision a downstream RKE1 node driver cluster with a non-auth private registry,  validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, delete the cluster and ensure the secret gets deleted
:white_check_mark:

4
Set system default registry to use a non-auth-enabled private registry, provision a downstream RKE1 node driver cluster, validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, delete the cluster and ensure the secret gets deleted
:white_check_mark:

5
Setup Rancher v2.7.2-rc4, provision a downstream RKE1 node driver cluster with ECR as the private registry with second-highest K8s version,  validate the cluster successfully deploys, validate that the cluster secret is not empty and contains expected data, upgrade the K8s version, validate the cluster secret still is not empty, delete the cluster and ensure the secret gets deleted
:white_check_mark:

6
Provision RKE1 cluster with ECR as the private registry, validate that it deploys, upgrade Rancher, upgrade K8s version, validate cluster secret is not empty and add a worker node
:white_check_mark:

7
Provision RKE1 cluster with an auth-enabled private registry, validate that it deploys, upgrade Rancher, upgrade K8s version, validate cluster secret is not empty and add a worker node
:white_check_mark:

8
Provision RKE1 cluster with an non auth-enabled private registry, validate that it deploys, upgrade Rancher, upgrade K8s version, validate cluster secret is not empty and add a worker node
:white_check_mark:

9
Set system default registry to use a non auth-enabled private registry, provision RKE1 cluster, validate that it deploys, upgrade Rancher, upgrade K8s version, validate cluster secret is not empty and add a worker node
:white_check_mark:

10
Provision RKE1 cluster with no private registry enabled, validate that it deploys, upgrade Rancher, upgrade K8s version and add a worker node
:white_check_mark:

Scenario 1

As a standard user, provisioned a downstream RKE1 node driver cluster with the following configurations:

K8s version → v1.23
cri-dockerd → disabled
Private registry → ECR

Validated that that the cluster and nodes came up as Active in Cluster Management and Cluster Explorer.
Viewed the cluster's YAML and validated that no sensitive data is exposed. Additionally, validated the following parameters are seen:

privateRegistryECRSecret , kubeletEnvSecret , privateRegistrySecret

Validate that all of the pods in the System project page come up as Active.
Navigated to top-left menu > RKE1 cluster. Validated that the images pulled are from the private registry and are Active.
Logged out and logged back into Rancher as an admin user.
Navigated to top-left dropdown menu > local cluster > Storage > Secrets.
Scrolled down to the cattle-global-data namespace and validate that cluster-registry-... is present and has the Data column populated with the registry name.
Clicked kubectl shell and ran command kubectl get secret cluster-registry-... -n cattle-global-data -o yaml  and validated that the secret was populated with data.
Decoded the .dockerconfigjson value and validated that the auth field contains the private registry credentials.
Navigate back to Cluster Management > RKE1 cluster.
Scaled the worker node pool from 1 → 2. Validated that the worker node is added and is Active.
Repeated steps 3-9 after the worker node has been added.
Deleted the cluster and validate that the cluster-registry-... is successfully removed as well from the local cluster.

Scenario 2

As a standard user, provisioned a downstream RKE1 custom driver cluster with the following configurations:

K8s version -> highest version
Private registry -> auth-enabled

Validated that that the cluster and nodes came up as Active in Cluster Management and Cluster Explorer.
Viewed the cluster's YAML and validated that no sensitive data is exposed. Additionally, validated the following parameters are seen:

privateRegistrySecret

Repeated scenario 1 steps 4-14 and received the same successful results.

Scenario 3

Repeated scenario 2 steps 1 - 3, but using a non-auth private registry and a node driver instead.
Validated that the cluster provisions successfully and is Active in Cluster Management and Cluster Explorer.
Repeated scenario 1 steps 4-14 and received the same successful results, with the exception of the cluster secret containing no data.

As this is a non-auth private registry, this is expected to be empty as there are no credentials to be decoded.

Scenario 4

As an admin user, navigated to top-left menu > Global Settings > Settings.
Updated system-default-registry to use a non auth-enabled private registry.
Logged out and logged back in as a standard user.
Repeated scenario 2 steps 1-3 and was able to successfully provision a downstream node driver cluster.
Repeated scenario 1 steps 4-14 with the same successful results, with the exception of the cluster secret containing no data.

As this is a non-auth private registry, this is expected to be empty as there are no credentials to be decoded.
Additionally, validated that removing the system-default-registry leaves the cluster in Active, but uses default Docker images instead of the specified non auth-enabled private registry. Likewise, placing the system-default-registry back to the non auth-enabled private registry reverses this change while keeping the cluster Active.

Scenario 5

As a standard user, provision a downstream RKE1 node driver cluster with the following configurations:

K8s version → highest available version

Validated that that the cluster and nodes come up as Active in Cluster Management and Cluster Explorer.
Viewed the cluster's YAML and validate that no sensitive data is exposed.
Validated that all of the pods in the System project page come up as Active.
Navigated back to Cluster Management > RKE1 cluster.
Scaled the worker node pool from 1 → 2. Validated that the worker node is added and is Active.

Scenario 6

Setup Rancher v2.7.0 and logged in as a standard user.
Provisioned a downstream RKE1 node driver cluster with the following configurations:

K8s version → v1.23
cri-dockerd → disabled
Private registry → ECR

Validated that that the cluster and nodes came up as Active in Cluster Management and Cluster Explorer.
Viewed the cluster's YAML and the following is seen:

privateRegistryECRSecret , kubeletEnvSecret , privateRegistrySecret

Validated that all of the pods in the System project page came up as Active.
Navigated to top-left menu > RKE1 cluster. Validated that the images pulled are from the private registry and are Active.
Logged out and logged back into Rancher as an admin user.
Navigated to top-left dropdown menu > local cluster > Storage > Secrets.
Scrolled down to the cattle-global-data namespace and validate that cluster-registry-... is present and has the Data column populated with the registry name.
Clicked kubectl shell and ran command `kubectl get secret cluster-registry-... -n cattle-global-data -o yaml  and validated that the secret is populated with data.
Upgraded Rancher v2.7.0 → v2.7.2-rc4.
Validated that the cluster and nodes do not auto-upgrade the K8s version and remained Active in Cluster Management and Cluster Explorer.
Repeated steps 3-8 with the same successful results.
Navigated back to Cluster Management and upgraded the cluster's K8s version to the highest available.
Validated that the cluster and nodes upgrade the K8s version and are in a state of Active.
Repeated steps 3-8 with the same successful results.
Navigated back to Cluster Management and scale the worker node pool from 1 → 2. Validated that the worker node is added and is Active.
Repeated steps 3-8 with the same successful results.
Deleted the cluster and validate that the cluster-registry-... is successfully removed as well from the local cluster.

Scenario 7

Setup Rancher v2.7.0 and logged in as a standard user.
Provisioned a downstream RKE1 node driver cluster with the following configurations:

K8s version -> second highest version
Private registry -> auth-enabled

Validated that that the cluster and nodes came up as Active in Cluster Management and Cluster Explorer.
Viewed the cluster's YAML and validated that no sensitive data is exposed. Additionally, validated the following parameters are seen:

privateRegistrySecret

Repeated scenario 6 steps 5-20 and received the same successful results.

Scenario 8

Repeated scenario 7 steps 1 - 3, but using a non-auth private registry instead.
Validated that the cluster provisions successfully and is Active in Cluster Management and Cluster Explorer.
Repeated scenario 6 steps 5-20 and received the same successful results, with the exception of the cluster secret containing no data.

As this is a non-auth private registry, this is expected to be empty as there are no credentials to be decoded.

Scenario 9

As an admin user, navigated to top-left menu > Global Settings > Settings.
Updated system-default-registry to use a non auth-enabled private registry.
Logged out and logged back in as a standard user.
Repeated scenario 7 steps 1-3 and was able to successfully provision a downstream node driver cluster.
Repeated scenario 16steps 4-14 with the same successful results, with the exception of the cluster secret containing no data.

As this is a non-auth private registry, this is expected to be empty as there are no credentials to be decoded.
Additionally, validated that removing the system-default-registry leaves the cluster in Active, but uses default Docker images instead of the specified non auth-enabled private registry. Likewise, placing the system-default-registry back to the non auth-enabled private registry reverses this change while keeping the cluster Active.

Scenario 10

Setup Rancher v2.7.0 and logged in as a standard user.
Provisioned a downstream RKE1 node driver cluster with the following configurations:

K8s version → second highest version

Validated that that the cluster and nodes came up as Active in Cluster Management and Cluster Explorer.
Viewed the cluster's YAML and the following is seen:

privateRegistryECRSecret , kubeletEnvSecret , privateRegistrySecret

Validated that all of the pods in the System project page came up as Active.
Upgraded Rancher v2.7.0 → v2.7.2-rc4.
Validated that the cluster and nodes do not auto-upgrade the K8s version and remained Active in Cluster Management and Cluster Explorer.
Navigated back to Cluster Management and upgraded the cluster's K8s version to the highest available.
Validated that the cluster and nodes upgrade the K8s version and are in a state of Active.
Navigated back to Cluster Management and scale the worker node pool from 1 → 2. Validated that the worker node is added and is Active.


htslib

C library for high-throughput sequencing data formats
https://github.com/samtools/htslib

I would suggest to create a new section "File Formats". Then I also would liket to see HDF5 in the list
https://support.hdfgroup.org/HDF5/


[typescript] Fix indexed message reading

Under certain situations the Mcap0IndexedReader would produce out of log time order messages from readMessages. This change fixes this behavior to produce in order messages.
Problem Description
To read data in-order the Mcap0IndexedReader uses a heap of ChunkCursors and reads data from the first cursor in the heap (the "min"). The heap is setup to use the compare method exposed on each ChunkCursor instance to compare it to other instances to maintain the properties of a heap and bring the "min" cursor to the "front". The logic within the compare function would try to sort ChunkCursors by which one needed reading next but also which one needed loading next (since the message indexes are read lazily for the cursors). This logic produced an anachronism within the heap which resulted in the front heap element being incorrect and ultimately resulting in producing out of order messages.
Here is how the compare logic failed.
Our file contains 3 chunks, each chunk contains messages denoted here with a number indicating their log time and drawn to show the relative time of each message in the overall time:
A: [1       4]
B:   [2]
C:      [3]

When the ChunkCursors are inserted into the heap their message indexes are un-initialized and they create an ordering of: [A, B, C] since the start time of A < B < C.
The read loop begins. It looks at the front of the heap and sees chunk cursor A. It sees that this chunk cursor needs initializing, it runs logic to initialize it and re-inserts it into the front of the heap. This causes the heap to re-sort from the front. When comparing to its child (B), B now evaluates before A because B has not been initialized (the compare function considers un-initialized chunk cursors as sorting before initialized ones (In certain situations - this is ultimately the bug).
B is at the front of the heap now. The read loop grabs B, sees that it needs initializing and runs logic to initialize it and re-insert it into the front of the heap. This causes the heap to re-sort from the front. The heap wants to properly sort B down. To do this it finds the "best" child of B by comparing the children of B (A, C) against each other and getting the smallest. When comparing A to C, the cursor compare function returns C as smaller than A because C has not been initialized. It returns C as the "best" child and compares B to C. Unfortunately, the compare function sees that B is completely before C and sorts B before C. Our heap is now: [B, A, C].
The read loop continues, grabs the first element (B), sees it is initialized and reads its first message (2). We've now read message (2) out of order because we never read message (1).
fix
The fix is to simplify the cursor compare function so that it no longer produces an anachronism but rather a stable sort. Rather than trying to surface un-loaded chunks before loaded ones in certain situations, the compare function evaluates the "sort time" of the two chunk cursors. For un-initialized chunks the sort time is simply the start time of the chunk and for initialized chunks the sort time is the time of the "read head" within the chunk.
Using the above scenario we now produce a stable sort. As the read loop evaluates the initial front of the heap it finds chunk cursor A. It initializes it and re-inserts it into the heap causing a re-sort. Since cursor A is still before cursor B, it remains at the front. The read loop reads message (1) from it and re-sorts the heap. Cursor A now has a time of (4) and so it sorts after B and C. The read loop sees (B) is un-initialized, initializes it and re-sorts the heap. The heap sort remains stable because A is still at (4), B is at (2), and C at (3): B, C, A. The read loop reads message (2) from B, and moves on to C. The process repeats until C is read and then finally A and we are done.

I think including the diagram into the unit test comments would help debug it in the future:
A: [1       4]
B:   [2]
C:      [3]

or something similar.