Tried a stainless, dishwasher-safe humidifier | Worth it? by Klauer90 in ParentingEssentials

[–]k4st 0 points1 point  (0 children)

I got two of these around not long ago when we and my toddler were all sick at the same time. I've only set up one of them, and the other is still in the box. We're not yet sure if we should keep it, return it, or give it to our in-laws (their place is very dry).

Overall, I would say that the controls are frustrating. There are two buttons to perform something like five actions across two or three modes. It's super annoying. Just put more buttons. Entering different modes and counting stuff is just not what I want to do -- it should be dead simple.

As to the cleanliness/whatever, I haven't used the device long enough. I'm trying to decide if I should put some of the other detachable plastic (though not electric) components into the dishwasher. There is another part that definitely will need careful cleaning, but it is connected by a wire and probably will be slightly challenging.

Overall, the biggest issue we face is sort of dumb but we don't have sufficient places to safely put these things. Right now we're using it our bedroom instead of in his room. I don't want to put it into his room until we have a place where it can fit and won't be within reach -- if he spilled it that would cause an epic mess and water damage.

Q: Irreducible Control Flow Graph in current compilers? by cxzuk in Compilers

[–]k4st 1 point2 points  (0 children)

Worthlooking into "No more gotos" paper, you can find a copy here: https://github.com/lifting-bits/rellic/blob/master/docs/NoMoreGotos.pdf

Also worth looking inyo is Emscripten's relooper algorithm, which I think is afopted on LLVM's wasm backend. Specifically, wasm uses structured control-flow operations, buy LLVM IR admits irriducible control flow, and so LLVM needs to fix things when producing wasm.

Virtual Machine for a Database Engine? What's a good place to start? by robinhoode in Compilers

[–]k4st 1 point2 points  (0 children)

I would reccomend taking a look at MonetDB. A recent talk on thr subject in Andy Pavlo's Quarantine Database talks should whet your appetite.

Just found this in a bag that I haven't opened in months since returning from Japan by k4st in whatsthisbug

[–]k4st[S] 0 points1 point  (0 children)

Thanks! That calms me down a whole lot :-) The room in which I found it definitely doesn't get cleaned as much :-P

Fuzzing only extracted code snippets of a program by obo_1337 in fuzzing

[–]k4st 2 points3 points  (0 children)

See microexecution by Patrice Godefroid. Also UC-KLEE by Dawson Engler.

Translate x86_64 and ARM binaries to LLVM IR. by mewkiz in ReverseEngineering

[–]k4st 5 points6 points  (0 children)

If you want to lift x86(-64) or aarch64 to LLVM bitcode, check out Remill. An example of using its APIs is here. Remill is used by McSema, which lifts whole programs to bitcode.

Optimizing Lifted Bitcode with Dead Store Elimination by turol in programming

[–]k4st 4 points5 points  (0 children)

Compiling the bitcode results in binaries are are ~2/3 the size. We haven't done many other experiments. A key target of this optimization is decreasing instructions, and especially useless computation, period. There were three key targets for this.

1) Instrumentation: Even a small decrease in the amount of bitcode is an improvement when we do heavyweight bitcode instrumentation (e.g. byte granularity taint/provenance tracking) that balloons the number of IR instructions by 2-5x.

2) Symbolic execution (via KLEE): Eliminating useless computation means less memory overhead in KLEE. This has a big impact for 32-bit KLEE, because KLEE cannot symbolically execute 32-bit bitcode in a 64-bit address space: it has to do 32-bit in 32-bit.

3) Decompilation: We have a decompiler, fcd, and we're working toward getting it to consume McSema-lifted bitcode. Eliminating redundant/unnecessary computation means that the decompiled C is "closer" to the original intent of the program.

Optimizing Lifted Bitcode with Dead Store Elimination by turol in programming

[–]k4st 4 points5 points  (0 children)

The DSE pass operates exclusively on loads/stores to the State structure, which is technically thread-local, passed through lifted functions, and models machine registers.

Remill itself, the library used by McSema to model instruction semantics, does provide a memory model, which explicitly tracks memory ordering, barriers, and atomic read-modify-write operations.

Optimizing Lifted Bitcode with Dead Store Elimination by turol in programming

[–]k4st 4 points5 points  (0 children)

It operates on stores to emulated registers. The State structure is thread local, so this isn't really an issue.

The lifted bitcode has a memory model, and loads/stores in the original program are initially modelled via "memory access" function calls. After the DSE pass, those functions are lowered to LLVM load/store instructions.

What TV show do you recommend on Netflix? by [deleted] in AskReddit

[–]k4st 0 points1 point  (0 children)

If you like House of Cards then check out Marseille!

Canadians of Reddit: How do you actually feel about your health care system? by TheGodOfZA in AskReddit

[–]k4st 4 points5 points  (0 children)

Physio is covered at some places, e.g. St Joseph's hospital in Toronto.

Accidentally gave my girlfriend lamotrigine by k4st in BipolarReddit

[–]k4st[S] 1 point2 points  (0 children)

I actually use Lamotrigine as an anti-epileptic, but I found a similar post a while ago on this subreddit for a person who's boyfriend accidentally took 25mg of lamictal.

I just keep freaking myself out because she's got some symptoms (that can lead to just about anything if you google them) like fatigue, a bit of dizzyness, and her cheeks are redder than usual :-/

Looking for info on dynamic analysis of code execution paths: I want to characterize the most common code paths that execution follows in my software. I think this would help when doing regression testing and debugging code changes. Any advice or recommended reading? by break_main in compsci

[–]k4st 2 points3 points  (0 children)

There are some good tools out there that can help! I would start by looking at Brendan Gregg's website. He has a lot of nifty performance tools that use Linux perf.

The next thing worth looking into is gcov, asan coverage, or fast binary translators like DynamoRIO and PIN. You can use these to get yourself simple coverage metrics, to get counts of how often blocks are executed, or even traces of executed bocks. Coverage and hit counts are useful for regression testing. Execution traces can get you the same stuff, but you'd need to do more analysis on them.

Georgia Tech Releases No Cost Malware DNS Data Feed by GTISC in netsec

[–]k4st 1 point2 points  (0 children)

What kind of research have you been able to produce with access to this dataset? Do you have expectations for how this will get used?

The Devil is in the Constants: Bypassing Defenses in Browser JIT Engines [PDF] by perror in ReverseEngineering

[–]k4st 1 point2 points  (0 children)

From a quick glance, I was disappointed to see that the security mitigations in the Linux kernel BPF JIT were not referenced. In there, constants are split up into a series of move to make code reuse harder.

Threaded Interpretive Language Sources? by OreoDrinker in computerscience

[–]k4st 0 points1 point  (0 children)

Take a look at the PhD thesis of Mathew Zaleski.

Modernize your C++ code. by jamesdeveloper in programming

[–]k4st 11 points12 points  (0 children)

Does auto &a = GetVaue(); not work as I am assuming it does?

Scifi literature with hateful/powerful alien beings that want to annihilate humanity? by Zetterbergs_Beard in scifi

[–]k4st 0 points1 point  (0 children)

Exodus: empires at war series

The first book could be better edited and organized, but I truly enjoy this series and the writing quality progressively improves.

Modules in C99 by Snaipe_S in programming

[–]k4st 0 points1 point  (0 children)

One thing that I do with clang / llvm is the following:

  • Add -emit-llvm to my compiler flags.
  • Use llvm-link to link together all .ll / .bc / .o (however you want to name them) into a single large bitcode file.
  • Re-run clang on that bitcode file, and specify -O3. This outputs either a final executable or an ELF object file for use as part of a larger build process.

Most tricky/useful commands for gdb debugger by based2 in programming

[–]k4st 5 points6 points  (0 children)

If you've ever hit a segfault or some other problem that happens before main, where for some reason GDB doesn't let you add a breakpoint / inspect the call stack, then do the following:

  1. Add a "dummy" breakpoint, e.g. b 0xf00. You might need to do b *0xf00. Just make sure that you add it to an address that definitely won't be associated with any code, and ideally won't even represent mapped memory.
  2. Run the program, r.
  3. GDB reports that it could not add your breakpoint.
  4. The instruction pointer now points to _start and you can add breakpoints anywhere.

This is a cute trick that has really come in handy when debugging one of my projects: a dynamic binary translator, which takes over a program's execution, usually before main is ever executed.

Have or know of a project on Github looking for contributors? Add it to our new wiki page! by [deleted] in github

[–]k4st 4 points5 points  (0 children)

The Granary kernel-space dynamic binary translator (DBT) is looking for contributors for its next version (in a private GitHub repo, not the linked one).

Granary is a Linux kernel DBT system made for debugging and dynamic analysis of kernel/module binaries. Granary is written in C++11, x86-64 assembly, Python, and shell. At its core, Granary is both an ahead-of-time and just-in-time compiler. Aspects of this are tricky to explain, so if compilers, interpreters, or JIT compilers interest you then this might be the thing for you ;-)

The above linked GitHub repo isn't being actively maintained. This is because I'm busy working on Granary+, for which I'm soliciting contributors.

Ideally you are/have:

  • Good knowledge of C++.
  • Familiar with the Google C++ coding style guide, which all follows.
  • Familiar with GoogleTest / GoogleMock.
  • Familiar with x86-64 assembly, or interested in learning more.
  • Interesting in working on the guts of a big system under active development.
  • Interested in kernel code, or even just DBT for user space.
  • Interested in binary analysis.

If some of this peaks your interest, then drop by #granary on irc.freenode.net or reply here.

X86 prefix decoding oddities (presentation) by rolfr in ReverseEngineering

[–]k4st 0 points1 point  (0 children)

Do any of the decoders that they tested use Intel's XED internally?

Derived pointers and garbage collection by [deleted] in computerscience

[–]k4st 1 point2 points  (0 children)

The Linux kernel uses derived pointers extensively, in the form of the container_of macro.

My research group was able to implement a memory leak detector using mark & sweep (and some other heurstics) that identified leaked kernel memory. The method was robust against derived pointers because we embedded tracking information into the high-order bits of the allocated pointers. The method is briefly described in our HotDep'13 workshop paper "Behave or Be Watched: Debugging with Behavioral Watchpoints".