feature article
Subscribe Now

Programmers Appreciate a Good Stack

Stack size is a matter of personal preference. Most programmers like large, well-endowed stacks that stretch the memory fabric to nearly overflowing. Others like to squeeze in smaller but perfectly formed ones with no wasted space. Whatever your predilection, handling an appropriately sized stack is usually done by feel instead of by the numbers. But that’s about to change.

Measuring stack size is the tricky part. It can be hard to get your arms around the problem. Most of us will just eyeball a passing stack and declare it too big, too small, or just right. But how do you quantify that decision? Without hands-on experience, it’s tough to know if a stack has room to grow or is bursting at the seams. Too big and you’re wasting memory; too small and you risk an embarrassing overflow.

From the sandy shores of San Diego comes the answer. Express Logic, the company that makes the ThreadX RTOS, has released StackX, a new tool for measuring and definitively quantifying stack size. With StackX, programmers can finally get a firm grasp on their stack measurements.

StackX works by analyzing a complete executable code stack, from top-level application down through operating system and drivers. Function calls, interrupt-service routines, stack pushes and pops, parameter passing: they all fall under StackX’s scrutiny. When the analysis is done you get a call-tree graph (which is helpful in itself) and a set of numbers detailing stack usage for each thread of execution. Any manual touch-up beyond that is up to you.

Stack overflows can be hideously difficult to debug because they so often occur in deeply nested routines. The routines themselves may not be buggy, so staring at the code won’t reveal any secrets.  Instead, the fault often lies within the calling conventions or the level to which routines are nested – interrupts often play a role here – and those call chains can be much harder to tease out. As a precaution, most programmers simply over-allocate their stack to avoid such problems.

But what constitutes over-allocation? To know how much is too much, you first have to know how much is enough, and most of us have no idea. We run (or we simulate) the code in a variety of conditions, watch how deep the stack gets, then add a proprietary “fudge factor” that allows us to sleep at night. Or at least, to ship the product. More often than not, the correct stack size is just a SWAG.

StackX doesn’t need to see any source code; it analyzes the near-executable (.elf) file produced by most programming tools. That means it’s equally at home analyzing C code or most other languages. Moreover, you don’t need access to the source code at all, so commercial libraries, object files, or other bits of linked-in code are all treated equally.

What’s also nice is that StackX isn’t specific to Express Logic’s own RTOS. It works on code destined for any RTOS, or no RTOS at all. Naturally, StackX works better on ThreadX-based systems because it understands ThreadX’s calling conventions and stack usage, a bonus for existing Express Logic customers.

So let us heap praise on StackX for its ability to quantify a hitherto informal process. Any tool that improves code reliability is a good thing. If it decreases programmer frustration, so much the better. A well-proportioned stack is a thing of beauty, and StackX provides a way for interested programmers to stay abreast of their memory requirements.

Leave a Reply

featured blogs
Sep 19, 2023
What's new with the latest Bluetooth mesh specification? Explore mesh 1.1 features that improve security and network efficiency, reduce power, and more....
Sep 20, 2023
Qualcomm FastConnect Software Suite for XR empowers OEMs with system-level optimizations for truly wireless XR....
Sep 20, 2023
The newest version of Fine Marine offers critical enhancements that improve solver performances and sharpen the C-Wizard's capabilities even further. Check out the highlights: γ-ReθTransition Model and Extension for Crossflow Modeling We have boosted our modeling capabi...
Sep 20, 2023
ESD protection analysis is a critical step in the IC design process; see how our full-chip PrimeESD tool accelerates ESD simulation and violation reporting.The post New Unified Electrostatic Reliability Analysis Solution Has Your Chip Covered appeared first on Chip Design...
Sep 10, 2023
A young girl's autobiography describing growing up alongside the creation of the state of Israel...

Featured Video

Chiplet Architecture Accelerates Delivery of Industry-Leading Intel® FPGA Features and Capabilities

Sponsored by Intel

With each generation, packing millions of transistors onto shrinking dies gets more challenging. But we are continuing to change the game with advanced, targeted FPGAs for your needs. In this video, you’ll discover how Intel®’s chiplet-based approach to FPGAs delivers the latest capabilities faster than ever. Find out how we deliver on the promise of Moore’s law and push the boundaries with future innovations such as pathfinding options for chip-to-chip optical communication, exploring new ways to deliver better AI, and adopting UCIe standards in our next-generation FPGAs.

To learn more about chiplet architecture in Intel FPGA devices visit https://intel.ly/45B65Ij

featured paper

An Automated Method for Adding Resiliency to Mission-Critical SoC Designs

Sponsored by Synopsys

Adding safety measures to SoC designs in the form of radiation-hardened elements or redundancy is essential in making mission-critical applications in the A&D, cloud, automotive, robotics, medical, and IoT industries more resilient against random hardware failures that occur. This paper discusses the automated process of implementing the safety mechanisms/measures (SM) in the design to make them more resilient and analyze their effectiveness from design inception to the final product.

Click here to read more

featured chalk talk

E-Mobility - Charging Stations & Wallboxes AC or DC Charging?
In this episode of Chalk Talk, Amelia Dalton and Andreas Nadler from Würth Elektronik investigate e-mobility charging stations and wallboxes. We take a closer look at the benefits, components, and functions of AC and DC wallboxes and charging stations. They also examine the role that DC link capacitors play in power conversion and how Würth Elektronik can help you create your next AC and DC wallbox or charging station design.
Jul 12, 2023
8,848 views