20
I Use This!
Activity Not Available

News

Posted over 7 years ago
I finished building my Talos II system, and I decided to post my thoughts on it here. This is an excellent machine, the best workstation I’ve ever used. It’s very fast — it compiles Emacs and the kernel in 2 minutes, and just spins up the fans a ... [More] little bit while doing so (under normal operation it’s quiet). And it’s in a completely different league in terms of openness than any other computer I’ve owned (and any other high performance computer on the market today). The system came with a nice user’s manual, and full schematics! I’ve already referred to the schematics to set up the pinmux for a rarely-used serial port so that I could use a TTL serial cable I had lying around (I submitted the device tree patch to Raptor). It’s really two computers in one: the “baseboard management controller” (BMC), a low power ARMv6, with a full distro on it, and the main POWER9 CPUs. The BMC boots up as soon as you plug in the power supply, before you even press the power button. (It would be nice if there were an ncurses top-like viewer for fan speeds and temperatures that I could leave running on the BMC serial console, but I haven’t found such a thing yet.) It has serial ports everywhere! One right into the main CPU, and two into the BMC. This is great for low level development, e.g., breaking into bootcode at an early stage. I left the machine running overnight after first booting it. My neighbourhood had a power glitch, and in the morning I discovered the main CPU was off, and power cycling it via the BMC wasn’t working. Before unplugging and plugging back in, I asked on #talos-workstation, and it turns out I had hit a bug in the first-release firmware. With special commands I was able to power cycle the main CPU just via BMC software (no unplug required). Wanting to know the details, I asked if there was a data sheet for the chip I was interacting with. The amazing thing, from an openness perspective, is that one of the Raptor engineers instead referred me directly to the Verilog source code of the FPGA handling the power sequencing. No searching for datasheets, no black box testing, just straight source code (which is recompilable using an open source FPGA toolchain, BTW.) It’s so refreshing to not have to do reverse engineering and speculation on opaque things when something fails. On this machine, everything is there, you just look up the source code. I’ve always disliked the inflexibility and opacity of BIOS/EFI in the x86 world. IBM has done an amazing job here with OpenPOWER. All the early boot code is open, no locked management engines or anything like that. And they’ve adopted Petitboot as the bootloader. It runs on a Linux kernel, so I was able to bootstrap via deboostrap over NFS by building everything within the bootloader environment. Running a compiler in a boot environment is surreal. Even with free options on x86 like libreboot or coreboot, and GRUB, the boot environment is extremely limited. With Petitboot at times I wondered if I even needed to boot into a “desktop” kernel (at least for serial-only activities.) Now I’m setting up my development environment and I’m learning about the PPC64 ELFv2 ABI, with a view toward figuring out how to bootstrap SBCL. I feel lucky that I got a POWER9 machine early while there are still some rough edges to figure out. [Less]
Posted over 7 years ago
We are pleased to announce the release of IcedTea 3.9.0! The IcedTea project provides a harness to build the source code from OpenJDK using Free Software build tools, along with additional features such as the ability to build against system ... [More] libraries and support for alternative virtual machines and architectures beyond those supported by OpenJDK. This release updates our OpenJDK 8 support with the July 2018 security fixes from OpenJDK 8 u181. If you find an issue with the release, please report it to our bug database under the appropriate component. Development discussion takes place on the distro-pkg-dev OpenJDK mailing list and patches are always welcome. Full details of the release can be found below. What’s New? New in release 3.9.0 (2018-09-27) Security fixes S8191239: Improve desktop file usage S8193419: Better Internet address support S8197871, CVE-2018-2938: Support Derby connections S8197925, CVE-2018-2940: Better stack walking S8199547, CVE-2018-2952: Exception to Pattern Syntax S8200666, CVE-2018-2973: Improve LDAP support PR3607, CVE-2018-3639: hw: cpu: speculative store bypass mitigation New features PR3623: Allow Shenandoah to be used on all architectures PR3624: Sync desktop files with Fedora/RHEL versions again PR3628: Install symlinks to tapsets in SystemTap directory Import of OpenJDK 8 u172 build 11 S8031304: Add dcmd to print all loaded dynamic libraries. S8044107: Add Diagnostic Command to list all ClassLoaders S8055755: Information about loaded dynamic libraries is wrong on MacOSX S8059036: Implement Diagnostic Commands for heap and finalizerinfo S8130400: Test java/awt/image/DrawImage/IncorrectClipXorModeSurface2Surface.java fails with ClassCastException S8136356: Add time zone mappings on Windows S8139673: NMT stack traces in output should show mtcomponent S8147542: ClassCastException when repainting after display resolution change S8154017: Shutdown hooks are racing against shutdown sequence, if System.exit()-calling thread is interrupted S8165466: DecimalFormat percentage format can contain unexpected % S8166772: Touch keyboard is not shown for text components on a screen touch S8169424: src/share/sample/scripting/scriptpad/src/scripts/memory.sh missing #! S8170358: [REDO] 8k class metaspace chunks misallocated from 4k chunk Freelist S8170395: Metaspace initialization queries the wrong chunk freelist S8176072: READING attributes are not available on TSF S8177721: Improve diagnostics in sun.management.Agent#startAgent() S8177758: Regression in java.awt.FileDialog S8183504: 8u131 Win 10, issue with wrong position of Sogou IME popup S8184991: NMT detail diff should take memory type into account S8187331: VirtualSpaceList tracks free space on wrong node S8187629: NMT: Memory miscounting in compiler (C2) S8187658: Bigger buffer for GetAdaptersAddresses S8187685: NMT: Tracking compiler memory usage of thread’s resource area S8187803: JDK part of JavaFX-Swing dialogs appearing behind main stage S8187985: Broken certificate number in debug output S8188855: Fix VS10 build after “8187658: Bigger buffer for GetAdaptersAddresses” S8189599: InitialBootClassLoaderMetaspaceSize and CompressedClassSpaceSize should be checked consistent from MaxMetaspaceSize S8189646: sun/security/ssl/SSLSocketImpl/SSLSocketCloseHang.java failed with “java.net.SocketTimeoutException: Read timed out” S8190442: Backout changes for JDK-8087291 from 8u-dev as it didn’t use main CR id S8190690: Impact on krb5 test cases in the 8u-CPU nightly S8191969: javac produces incorrect RuntimeInvisibleTypeAnnotations length attribute S8192987: keytool should remember real storetype if it is not provided S8193156: Need to backout fixes for JDK-8058547, JDK-8055753, JDK-8085903 S8193807: Avoid UnsatisfiedLinkError on AIX by providing empty basic implementations of getSystemCpuLoad and getProcessCpuLoad Import of OpenJDK 8 u181 build 13 S8038636: speculative traps break when classes are redefined S8051972: sun/security/pkcs11/ec/ReadCertificates.java fails intermittently S8055008: Clean up code that saves the previous versions of redefined classes S8057570: RedefineClasses() tests fail assert(((Metadata*)obj)->is_valid()) failed: obj is valid S8074373: NMT is not enabled if NMT option is specified after class path specifiers S8076117: EndEntityChecker should not process custom extensions after PKIX validation S8156137: SIGSEGV in ReceiverTypeData::clean_weak_klass_links S8157898: SupportedDSAParamGen.java failed with timeout S8169201: Montgomery multiply intrinsic should use correct name S8170035: When determining the ciphersuite lists, there is no debug output for disabled suites. S8176183: sun/security/mscapi/SignedObjectChain.java fails on Windows S8187045: [linux] Not all libraries in the VM are linked with -z,noexecstack S8187635: On Windows Swing changes keyboard layout on a window activation S8188223: IfNode::range_check_trap_proj() should handler dying subgraph with single if proj S8196224: Even better Internet address support S8196491: Newlines in JAXB string values of SOAP-requests are escaped to “ ” S8196854: TestFlushableGZIPOutputStream failing with IndexOutOfBoundsException S8197943: Unable to use JDWP API in JDK 8 to debug JDK 9 VM S8198605: Touch keyboard is shown for a non-focusable text component S8198606: Touch keyboard does not hide, when a text component looses focus S8198794: Hotspot crash on Cassandra 3.11.1 startup with libnuma 2.0.3 S8199406: Performance drop with Java JDK 1.8.0_162-b32 S8199748: Touch keyboard is not shown, if text component gets focus from other text component S8200359: (tz) Upgrade time-zone data to tzdata2018d S8201433: Fix potential crash in BufImg_SetupICM S8202585: JDK 8u181 l10n resource file update S8202996: Remove debug print statements from RMI fix S8203233: (tz) Upgrade time-zone data to tzdata2018e S8203368: ObjectInputStream filterCheck method throws NullPointerException S8204874: Update THIRDPARTYREADME file S8205491: adjust reflective access checks Backports S8008321, PR3599: compile.cpp verify_graph_edges uses bool as int S8064786, PR3601: Fix debug build after 8062808: Turn on the -Wreturn-type warning S8075942, PR3602, RH1582032: ArrayIndexOutOfBoundsException in sun.java2d.pisces.Dasher.goTo S8146115, PR3508, RH1463098: Improve docker container detection and resource configuration usage S8184309, PR3596: Build warnings from GCC 7.1 on Fedora 26 S8203182, PR3603: Release session if initialization of SunPKCS11 Signature fails S8206406, PR3610, RH1597825: StubCodeDesc constructor publishes partially-constructed objects on StubCodeDesc::_list S8207057, PR3613: No debug info for assembler files Bug fixes PR3597: Potential bogus -Wformat-overflow warning with -Wformat enabled PR3600: jni_util.c does not import header file which declares getLastErrorString PR3601: Fix additional -Wreturn-type issues introduced by 8061651 PR3630: Use ${datadir} when specifying default tz.properties location PR3632: IcedTea installing symlinks to SystemTap directory rather than individual tapsets AArch64 port S8207345, PR3626: Trampoline generation code reads from uninitialized memory Shenandoah PR3619: Shenandoah broken on s390 PR3620: Shenandoah broken on ppc64 Allocation failure injection machinery [backport] AArch64 shenandoah_store_check should read evacuation_in_progress as byte [backport] Account trashed regions from coalesced CM-with-UR [backport] Adaptive collection set selection in adaptive policy [backport] Adaptive heuristics accounts trashed cset twice [backport] Adapt upstream object pinning API [backport] Add comments in shenandoah_store_check on direct heap field use [backport] Added diagnostic flag ShenandoahOOMDuringEvacALot [backport] Added missing header file for non-PCH build [backport] Add missing barrier in C1 NIOCheckIndex intrinsic [backport] Add new pinned/cset region state for evac-failure-path [backport] Add ShenandoahRootProcessor API to report threads while scanning roots [backport] Add test to verify Shenandoah is not enabled by default, and enabled with the flag [backport] Add -XX:+ShenandoahVerify to more interesting tests [backport] AESCrypt.implEncryptBlock/AESCrypt.implDecryptBlock intrinsics assume non null inputs [backport] Allow use of fp spills around write barrier [backport] Arraycopy fixes (tests and infrastructure) [backport] Assert Shenandoah-specific safepoints instead of generic ones [backport] Asynchronous region recycling [backport] Avoid notifying about zero waste [backport] barrier moved due to null checks needs to always fix memory edges [backport] Basic support for x86_32: build and run in STW configuration [backport] Bitmap based ShHeapRegionSet [backport] Break heuristics out from ShCollectorPolicy into their own source files [backport] C2 should use heapword-sized object math [backport] Check BS type in immByteMapBase predicate [backport] Cleanup allocation tracking in heuristics [backport] Cleanup and refactor Full GC code [backport] Cleanup and strengthen BrooksPointer verification [backport] Clean up dead code [backport] Cleanup: removed unused code [backport] Cleanup reset_{next|complete}_mark_bitmap [backport] Cleanup SHH::should_start_normal_gc [backport] “Compact” heuristics for dense footprint scenarios [backport] Compact heuristics should not shortcut on immediate garbage, but aggressively compact [backport] Conditionalize PerfDataMemorySize on enabled heap sampling [backport] Consistent liveness for humongous regions [backport] Control loop should wait before starting another GC cycle [backport] Critical native tests should only be ran on x86_64 platforms [backport] Degenerated GC [backport] Degenerated GC: rename enum, report degen reasons in stats [backport] Demote ShenandoahAllocImplicitLive to diagnostic [backport] Demote warning message about OOM-during-evac to informational [backport] Denser ShHeapRegion status line [backport] Disable verification from non-Shenandoah VMOps. [backport] Disallow pinned_cset region moves and allocations during Full GC [backport] Disambiguate “upgrade to Full GC” GCause [backport] Do not add non-allocatable regions to the freeset [backport] Don’t treat allocation regions implicitely live during some GCs [backport] Double check for UseShenandoahGC in WB expand [backport] Drop distinction between immediate garbage and free in heuristics [backport] Dynamic worker refactoring [backport] Eagerly drop CSet state from regions during Full GC [backport] Eliminate write-barrier assembly stub (part 1) [backport] Enable biased locking for Shenandoah by default [backport] Ensure tasks use correct number of workers [backport] Excessive assert in ShHeap::mark_next [backport] Excessive asserts in marked_object_iterate [backport] FinalEvac pause to turn off evacuation [backport] Fix || and && chaining warnings in memnode.cpp [backport] Fix broken asserts in ShenandoahSharedEnumFlag [backport] Fixed code roots scanning that might be bypassed during degenerated cycle [backport] Fixed compilation error of libTestHeapDump.c on Windows with VS2010 [backport] Fixed missing ResourceMark in ShenandoahAsserts::print_obj [backport] Fixed pinned region handling in mark-compact [backport] Fix (external) heap iteration + TestHeapDump should unlock aggressive heuristics [backport] fix for alias analysis with ShenandoahBarriersForConst [backport] Fix/improve CLD processing [backport] Fixing Windows and ARM32 build [backport] Fix Mac OS build warnings [backport] Fix Minimal VM build [backport] Fix ShFreeSet boundary case [backport] fix TCK crash with shenandoah [backport] Forcefully update counters when GC cycle is running [backport] FreeSet and HeapRegion should have the reference to ShenandoahHeap [backport] FreeSet refactor: bitmaps, cursors, biasing [backport] FreeSet should accept responsibility over trashed regions [backport] FreeSet should report its internal state before/after GC cycle [backport] Full GC should compact humongous regions [backport] Full GC should not trash empty regions [backport] GC state testers (infra) [backport] Generic verification is possible only at Shenandoah safepoints [backport] Get easy on template instantiations in ShConcMark [backport] Heap region sampling should publish region states [backport] Humongous regions should support explicit pinning [backport] Immediate garbage ratio should not go over 100% [backport] Implement flag to generate write-barriers without membars [backport] Implement protocol for safe OOM during evacuation handling + Use jint in oom-evac-handler to match older JDKs Atomic support better + Missing OOMScope in ShenandoahFixRootsTask [backport] Improve assertion/verification messages a bit [backport] Improve/more detailed timing stats for root queue work [backport] Incorrect constant folding with final field and -ShenandoahOptimizeFinals [backport] Increase test timeouts [backport] Introduce assert_in_correct_region to verify object is in correct region [backport] Isolate shenandoahVerifier from stray headers [backport] keep read barriers for final instance/stable field accesses [backport] Keep track of per-cycle mutator/collector allocs. Fix mutator/collector alloc region overlap in traversal. [backport] Little cleanup [backport] Log message on ref processing, class unload, update refs for mark events [backport] LotsOfCycles test timeouts [backport] Make concurrent precleaning log message optional again [backport] Make control loop more responsive under allocation pressure [backport] Make degenerated update-refs use region-set cursor to hand over work [backport] Make heap counters update completely asynchronous [backport] Make major GC phases exclusive from each other [backport] Make sure selective barriers enabling/disabling works [backport] Make sure -XX:+ShenandoahVerify comes first in the tests [backport] Mark bitmap slices commit/uncommit + Aggregated bitmap slicing [backport] Match barrier fastpath checks better [backport] Minor cleanups [backport] Minor cleanup, uses latest Atomic API [backport] Move barriers into typeArrayOop.hpp direct memory accessors [backport] Move ShHeap::used increment out of locked allocation path [backport] No need for fence in control loop: flags are now ShSharedVariables [backport] Only report GC pause time to GC MXBean + Re-fix memory managers and memory pools usage and pause reporting [backport] Optimize fwdptr region handling in ShenandoahVerifyOopClosure::verify_oop [backport] Optimize oop/fwdptr/hr_index verification a bit [backport] overflow integer during size calculation [backport] Pacer should account allocation waste and unsuccessful pacing in the budget [backport] Pacer should poll FreeSet to figure out actually available space [backport] Passive should opt-in the barriers, not opt-out [backport] Pauses that do not affect heap occupancy should not report heap [backport] Print message when heuristics changes the setting ergonomically [backport] Protect C2 matchers with UseShenandoahGC [backport] Provide non-taxable allocation slack at the beginning of the cycle [backport] Record cycle start/end to avoid continuous periodic GC [backport] Record Shenandoah events in hs_err events section [backport] Refactor allocation failure and explicit GC handling [backport] Refactor allocation metadata handling [backport] Refactor FreeSet rebuilding into the single source [backport] Refactoring GC phase and heap allocation tracking out of policy [backport] Refactor uncommit handling: react on explicit GCs, feature kill flag, etc [backport] Refactor worker timings into ShenandoahPhaseTimings [backport] ReferenceProcessor is_alive setup is racy [backport] Region sampling should lock while gathering region data [backport] Rehash VMOperations and cycle driver mechanics for consistency [backport] Relax assert in SBS::is_safe() [backport] Remove BS:is_safe in favor of logged BS::verify_safe_oop [backport] Remove CSetThreshold handling from heuristics [backport] Remove FreeSet::add_region, inline into FreeSet::rebuild [backport] Remove obsolete check in FreeSet::allocate [backport] Remove ShenandoahGCWorkerPerJavaThread flag [backport] Remove ShenandoahMarkCompactBarrierSet [backport] Rename and cleanup _regions and _free_set uses [backport] Rename dynamic heuristics to static [backport] Rename *_oop_static/oop_ref to *_forwarded [backport] Rename ShenandoahConcurrentThread to ShenandoahControlThread [backport] Report all GC status flags in hs_err [backport] Report fwdptr size in JNI GetObjectSize [backport] Report how much we have failed to allocate during Allocation Failure [backport] Report illegal transitions verbosely, and remove some no-op transitions [backport] Rewire control loop to avoid double cleanup work [backport] Rework shared bool/enum flags with proper types and synchronization [backport] Rewrite and fix ShenandoahHeap::marked_object_iterate [backport] Rich assertion failure logging [backport] Roots verification should take the special roots first [backport] RP closures should accept NULL referents [backport] Set ShenandoahMinFreeThreshold default to 10% [backport] Setup process references and class unloading once before the cycle [backport] ShConcurrentThread races with set_gc_state_bit [backport] Shenandoah critical native support [backport] Shenandoah region/set iterators should not allow copying [backport] Shenandoah SA implementation [backport] Shenandoah/SPARC barrier stubs [backport] ShenandoahVerifyOptoBarriers should not fail with disabled barriers [backport] ShenandoahWriteBarrierNode::find_bottom_mem() fix [backport] ShenandoahWriteBarrierRB flag to conditionally disable RB on WB fastpath [backport] Shenandoah/Zero barrier stubs [backport] SieveObjects test is too hostile to verification [backport] Single GCTimer shared by all operations [backport] Single thread-local GC state flag for all barriers [backport] Some smallish ShHeapRegionSet changes [backport] Speed up asserts and verification, improve fastdebug builds performance [backport] Split live data management for allocations and GCs [backport] Static heuristics should be really static and report decisions [backport] Static heuristics should use non-zero allocation threshold [backport] Store checks should run most of the time [backport] Tax-and-Spend allocation pacing [backport] Testbug: VerifyJCStressTest leaks memory [backport] TestSelectiveBarrierFlags should accept multi-element flag selections [backport] TestSelectiveBarrierFlags times out due to too aggressive compilation mode [backport] Trim/expand test heap sizes to fit small heaps [backport] Trim the TLAB sizes to avoid wasteful retirement under TLAB races [backport] Use leftmost region in GC allocations [backport] Use os::naked_short_sleep instead of naked Thread events for sleeping [backport] Use/sort (cached) RegionData not ShenandoahHeapRegionSet (infrastructure) [backport] UX: Cleanup (adaptive) CSet selection message [backport] UX: Pacer reports incorrect free size [backport] UX: Shorter gc+ergo messages from CSet selection [backport] Verifier crashes when reporting multiple forwardings [backport] Verifier should check klass pointers before attempting to reach for object size [backport] Verifier should print verification label at liveness verification [backport] Verify fwdptr accesses during Full GC moves [backport] Verify regions status [backport] When Shenandoah WB is moved out of loop, connect it to correct loop memory Phi (back out and revisit previous fix) [backport] Wipe out ShenandoahStoreCheck implementation [backport] Workaround C1 ConstantOopWriteValue bug Bitmap size might not be page aligned when large page is used Changed claim count to jint Cherry-pick JDK-8173013: JVMTI tagged object access needs G1 pre-barrier Defer cleaning of system dictionary and friends to parallel cleaning phase Do not put down update-refs-in-progress flag concurrently Fix AArch64 build failure: misplaced #endif Fixed Shenandoah 8u build Fixed Windows build Fix non-PCH build Fix non-PCH x86_32 build Fix up SPARC and Zero headers for proper locations missing barriers in String intrinsics with -ShenandoahOptimizeInstanceFinals -ShenandoahOptimizeStableFinals Missing event log for canceled GC StringInternCleanup times out VerifyJCStressTest should test all heuristics Workaround VM crash with JNI Weak Refs handling The tarballs can be downloaded from: http://icedtea.classpath.org/download/source/icedtea-3.9.0.tar.gz http://icedtea.classpath.org/download/source/icedtea-3.9.0.tar.xz We provide both gzip and xz tarballs, so that those who are able to make use of the smaller tarball produced by xz may do so. The tarballs are accompanied by digital signatures available at: http://icedtea.classpath.org/download/source/icedtea-3.9.0.tar.gz.sig http://icedtea.classpath.org/download/source/icedtea-3.9.0.tar.xz.sig These are produced using my public key. See details below. PGP Key: ed25519/0xCFDA0F9B35964222 (hkp://keys.gnupg.net) Fingerprint = 5132 579D D154 0ED2 3E04 C5A0 CFDA 0F9B 3596 4222 GnuPG >= 2.1 is required to be able to handle this key. SHA256 checksums: 84a63bc59f4e101ce8fa183060a59c7e8cbe270945310e90c92b8609a9b8bc88 icedtea-3.9.0.tar.gz 7ee0a348f4e32436b3cdc915f2a405ab8a6bfca0619d9acefb2920c14208d39e icedtea-3.9.0.tar.gz.sig 45577f65e61509fcfa1dfce06ff9c33ef5cfea0e308dc1f63e120975ce7bdc3c icedtea-3.9.0.tar.xz 82cb48e36437d0df16fe5071c3d479672d2b360a18afe73559c63d6fb604caf2 icedtea-3.9.0.tar.xz.sig The checksums can be downloaded from: http://icedtea.classpath.org/download/source/icedtea-3.9.0.sha256 A 3.9.0 ebuild for Gentoo is available. The following people helped with these releases: Andrew Hughes (all bug fixes and backports, release management) We would also like to thank the bug reporters and testers! To get started: $ tar xzf icedtea-3.9.0.tar.gz or: $ tar x -I xz -f icedtea-3.9.0.tar.xz then: $ mkdir icedtea-build $ cd icedtea-build $ ../icedtea-3.9.0/configure $ make Full build requirements and instructions are available in the INSTALL file. Happy hacking! [Less]
Posted over 7 years ago
I'm proud to announce the first release of StepSync, a file sync tool for GNUstep and MacOS (even for venerable PowerPC).StepSync allows synchronization of folders, optionally recursively descending in sub-folders. It allows thus various options of ... [More] performing backups: pure insertion, updates and including full synchronization by importing changes from target to source.After months of development and testing, I consider it stable enough, I tested it with thousands of files and folders.You can find it at the GNUstep Application Project. I already have plans for new features! [Less]
Posted over 7 years ago
One of my hobbies in GDB is cleaning things up. A lot of this is modernizing and C++-ifying the code, but I’ve also enabled a number of warnings and other forms of code checking in the last year or two. I thought it might be interesting to look at ... [More] the impact, on GDB, of these things. So, I went through my old warning and sanitizer patch series (some of which are still in progress) to see how many bugs were caught. This list is sorted by least effective first, with caveats. -fsanitize=undefined; Score: 0 or 10 You can use -fsanitize=undefined when compiling to have GCC detect undefined behavior in your code.  This series hasn’t landed yet (it is pending some documentation updates). We have a caveat already!  It’s not completely fair to put UBsan at the top of the list — the point of this is that it detects situations where the compiler might do something bad.  As far as I know, none of the undefined behavior that was fixed in this series caused any visible problem (so from this point of view the score is zero); however, who knows what future compilers might do (and from this point of view it found 10 bugs).  So maybe UBSan should be last on the list. Most of the bugs found were due to integer overflow, for example decoding ULEB128 in a signed type.  There were also a couple cases of passing NULL to memcpy with a length of 0, which is undefined but should probably just be changed in the standard. -Wsuggest-override; Score: 0 This warning will fire if you have a method that could have been marked override, but was not.  This did not catch any gdb bugs.  It does still have value, like everything on this list, because it may prevent a future bug. -Wduplicated-cond; Score: 1 This warning detects duplicated conditions in an if-else chain.  Normally, I suppose, these would arise from typos or copy/paste in similar conditions.  The one bug this caught in GDB was of that form — two identical conditions in an instruction decoder. GCC has a related -Wduplicated-branches warning, which warns when the arms of an if have identical code; but it turns out that there are some macro expansions in one of GDB’s supporting libraries where this triggers, but where the code is in fact ok. -Wunused-variable; Score: 2 When I added this warning to the build, I thought the impact would be removing some dead code, and perhaps a bit of fiddling with #ifs.  However, it caught a couple of real bugs: cases where a variable was unused, but should have been used. -D_GLIBCXX_DEBUG; Score: 2 libstdc++ has a debug mode that enables extra checking in various parts of the C++ library.  For example, enabling this will check the irreflexivity rule for operator<.  While the patch to enable this still hasn’t gone in — I think, actually, it is still pending some failure investigation on some builds — enabling the flag locally has caught a couple of bugs.  The fixes for these went in. -Wimplicit-fallthrough; Score: 3 C made a bad choice in allowing switch cases to fall through by default.  This warning rectifies this old error by requiring you to explicitly mark fall-through cases. Apparently I tried this twice; the first time didn’t detect any bugs, but the second time — and I don’t recall what, if anything, changed — this warning found three bugs: a missing break in the process recording code, and two in MI. -Wshadow=local; Score: 3 Shadowing is when a variable in some inner scope has the same name as a variable in an outer scope.  Often this is harmless, but sometimes it is confusing, and sometimes actively bad. For a long time, enabling a warning in this area was controversial in GDB, because GCC didn’t offer enough control over exactly when to warn, the canonical example being that GCC would warn about a local variable named “index“, which shadowed a deprecated C library function. However, now GCC can warn about shadowing within a single function; so I wrote a series (still not checked in) to add -Wshadow=local. This found three bugs.  One of the bugs was found by happenstance: it was in the vicinity of an otherwise innocuous shadowing problem.  The other two bugs were cases where the shadowing variable caused incorrect behavior, and removing the inner declaration was enough to fix the problem. -fsanitize=address; Score: 6 The address sanitizer checks various typical memory-related errors: buffer overflows, use-after-free, and the like.  This series has not yet landed (I haven’t even written the final fix yet), but meanwhile it has found 6 bugs in GDB. Conclusion I’m generally a fan of turning on warnings, provided that they rarely have false positives. There’s been a one-time cost for most warnings — a lot of grunge work to fix up all the obvious spots.  Once that is done, though, the cost seems small: GDB enables warnings by default when built from git (not when built from a release), and most regular developers use GCC, so build failures are caught quickly. The main surprise for me is how few bugs were caught.  I suppose this is partly because the analysis done for new warnings is pretty shallow.  In cases like the address sanitizer, more bugs were found; but at the same time there have already been passes done over GDB using Valgrind and memcheck, so perhaps the number of such bugs was already on the low side. [Less]
Posted over 7 years ago
Graphos 0.7 has been released a couple of days ago!What's new for GNUstep's vector editor? improved Bezier path editor (add/remove points) Knife (Bezier Path splitting) instrument fixed and re-enabled (broken since original GDraw import!) important ... [More] crash fixes (Undo/Redo related) Interface improvements to be more usable with Tablet/Pen digitizer. Graphos continues to work on GNUstep for Linux/BSD as well as natively on MacOS.Graphos running on MacOS: [Less]
Posted over 7 years ago
I have acquired a Thinkpad X41 Tablet and worked quite a bit on it making it usable and then installing Linux and of course GNUstep on it. The original battery was dead and the compatible replacement I got is bigger, it works very well, but makes the ... [More] device unbalanced.Anyway, my interest about it how usable GNUstep applications would be and especially Graphos, its (and my) drawing application.Using the interface in Tablet mode is different: the stylus is very precise and allows clicking by pointing the tip and a second button is also possible. However, contrary to the mouse use, the keyboard is folded so no keyboard modifiers are possible. Furthermore GNUstep has no on-screen keyboard so typing is not possible.The classic OpenStep-style Menus work exceedingly well with a touch interface:the menus are easy to click and teared-out they remain like palettes, making toolbars not necessary.This is a good start! However, Graphos was not easy to use: aside from typing text, with no keyboard, several components requried typing (e.g. inserting Line Width).I worked on the interface so that all these elements also had a clickable interface (e.g. Stepper Arrows). Duplicating certain items available in context-menus in regular menus, which can be detached, provided also an enhancements.Standard items like the color wheel already work very wellDrawing on the screen is definitely very precise and convenient. Stay tuned for the upcoming release! [Less]
Posted over 7 years ago
A new release (1.0) for DataBasin and its framework DataBasinKit is out!This release provides lots of news, most of the enhancements coming from the framework and exposed by the GUI: Update login endpoint to login.salesforce.com (back again!) ... [More] Implement retrieve (get fields from a list of IDs, natively) Support nillable fields on create save HTML tables and pseudo-XLS in HTML-typed formats Fix cloning of connections in case of threading Implement Typing of fields after describing query elements (DBSFDataTypes) DataBasin is a tool to access and work with SalesForce.com. It allows to perform queries remotely, export and import data, inspect single records and describe objects. DataBasinKit is its underlying framework which implements the APIs in Objective-C. Works on GNUstep (major Unix variants and MinGW on windows) and natively on macOS. [Less]
Posted over 7 years ago
In this post I want to introduce a (not so very) new GC mode that we call “Traversal GC”. It all started over a year ago when I implemented the ‘partial’ mode. The major feature of the partial mode is that it can concurrently collect a part of the ... [More] heap, without the need to traverse all live objects, hence the name partial GC. I will go into details of how that works in a later post. First I would like to explain another foundation of Shenandoah’s partial GC, which is the single-traversal-GC, or short Traversal GC. Let me first show some pictures that explain how Shenandoah works (and in-fact, more or less how other collectors work): Shenandoah usually runs in one of two modes (switched dynamically depending on automatic ergonomic decisions): First the 3-phase mode: The cycles are: Concurrent mark: traversal all live objects, starting from roots, and mark each visited object as live. Concurrent evacuation: based on liveness information from concurrent marking, select a number of regions, compact all live objects in that region into fresh regions. Concurrent update-refs: scan all live objects and update their references to point to the new copies of the compacted objects. Each concurrent phase is book-ended by a stop-the-world phase to safely scan GC roots (thread stacks) and do some housekeeping. That makes 4 (very short, but still measurable) pauses during which no Java thread can make progress. When GC pressure is high, and GC cycles run close to back-to-back, Shenandoah switches to 2-phase operation. The idea is to skip concurrent update-refs phase, and instead piggy-back it on subsequent concurrent marking cycle: In other words, we now have: Concurrent mark: traversal all live objects, starting from roots, and mark each visited object as live. At the same time, when encountering references to from-space, update the to point to the to-space copy. Concurrent evacuation: based on liveness information from concurrent marking, select a number of regions, compact all live objects in that region into fresh regions. As before, we still have pauses before and after each phase, now totalling 3 stop-the-world pauses per cycle. Can we do better? Turns out that we can: Now we only have one concurrent phase during which we: Visit each live object, starting from roots When encountering an object that is in the collection-set, evacuate it to a fresh compaction region Update all references to point to the new copies. The single concurrent phase is book-ended by 2 very short stop-the-world phases. This probably sounds easy and obvious, but the devil lies, as usual, in some interesting details: How to select the collection-set? We have no liveness information when we start traversing. How to ensure consistencies: Traversal consistency: how to deal with changing graph shape during traversal Data consistency: how to ensure writes go to the correct copy of objects, how to ensure reads don’t read stale data, etc Update consistency: how to avoid races between updating of references and ordinary field updates I will go into those details in a later post. If you’re interested in trying out the traversal mode, it’s all already in Shenandoah (jdk10, jdk11 and dev branches) and stable enough to use. Simply pass -XX:ShenandoahGCHeuristics=traversal in addition to the usual -XX:+UseShenandoahHeap on the command line. More information about how to get and run Shenandoah GC can be found in our Shenandoah wiki. [Less]
Posted over 7 years ago
A new release for GNUmail (Mail User Agent for GNUstep and MacOS) and Pantomime (portable MIME Framework): 1.3.0!Panomime APIs were update to have safer types: mostly count and sizes were transitioned to more Cocoa-like NSUinteger/NSInteger or ... [More] size_t/ssize_t where appropriate.This required a major release as 1.3.0 for both Pantomime and GNUMail. In several functions returning -1 was replaced by NSNotFound.Note: When running the new GNUMail it will update your message cache to the new format. In case of problems, clean it (or in case of reverting to the old version). Message size is now encoded as unsigned instead of signed inside it.Countless enhancements and bug fixes in both Pantomime and GNUMail should improve usability.Previously there were issues of certain messages not loading when containing special characters and/or decoding personal part of Addresses.Pantomime: Correct signature detection as per RFC (caused issues when removing it during replies) improved address and quoted parsing generally improved header parsing Encoding fixes Serious iconv fix which could cause memory corruption due to realloc Fixes for Local folders (should help fix #53063, #51852 and generally bugs with POP and Local accounts) generally improved init methods to check for self, that may help avoid memory issues and debugging in the future various code cleanup in Message loading for better readibility more logging code for debug build, should help debugging GNUMail Possibility to create filters for To and CC directly in message context menu Read/Unread and Flag/Unflag actions directly in the message context menu Size status for Messages in bytes KiloBytes or MegaBytes depending on size Spelling fixes Improved Menu Validation fix for #52817 generally improved init methods to check for self, that may help avoid memory issues and debugging in the future GNUstep Only: Find Panel is now GORM based [Less]
Posted over 7 years ago
A new release for GNUmail (Mail User Agent for GNUstep and MacOS) and Pantomime (portable MIME Framework): 1.3.0!Panomime APIs were update to have safer types: mostly count and sizes were transitioned to more Cocoa-like NSUinteger/NSInteger or ... [More] size_t/ssize_t where appropriate.This required a major release as 1.3.0 for both Pantomime and GNUMail. In several functions returning -1 was replaced by NSNotFound.Note: When running the new GNUMail it will update your message cache to the new format. In case of problems, clean it (or in case of reverting to the old version). Message size is now encoded as unsigned instead of signed inside it.Countless enhancements and bug fixes in both Pantomime and GNUMail should improve usability.Previously there were issues of certain messages not loading when containing special characters and/or decoding personal part of Addresses.Pantomime: Correct signature detection as per RFC (caused issues when removing it during replies) improved address and quoted parsing generally improved header parsing Encoding fixes Serious iconv fix which could cause memory corruption due to realloc Fixes for Local folders (should help fix #53063, #51852 and generally bugs with POP and Local accounts) generally improved init methods to check for self, that may help avoid memory issues and debugging in the future various code cleanup in Message loading for better readibility more logging code for debug build, should help debugging GNUMail Possibility to create filters for To and CC directly in message context menu Read/Unread and Flag/Unflag actions directly in the message context menu Size status for Messages in bytes KiloBytes or MegaBytes depending on size Spelling fixes Improved Menu Validation fix for #52817 generally improved init methods to check for self, that may help avoid memory issues and debugging in the future GNUstep Only: Find Panel is now GORM based [Less]