907 research outputs found

    Fast and Precise On-The-Fly Data Race Detection

    Get PDF
    While concurrent programming is quickly gaining popularity lately, developing bug-free programs is still challenging. Although developers have a wide choice of race detection tools available, we have found that the majority of these techniques do not scale well and developers are often forced to balance precision with speed. Additionally, various practical issues force even precise race detectors to produce spurious warnings, defeating their purpose and burdening their users. We design and implement a novel race detection technique that is both fast and precise, even in the face of missing program source information. Towards this goal, we have developed two separate tools, TREE and RDIT, that respectively improve performance and precision over existing techniques. TREE, implemented in the RoadRunner framework, acts as a filter and sends through only those events that might add value to race detection while eliminating those events which are deemed redundant for this purpose. All the while, removing these redundant events does not affect its race detection capability. We have evaluated TREE against a whole set of standard benchmarks, including two large real-world applications. We have found that there exists a significant number of redundant events in all these applications and on an average, TREE saves somewhere between 15-25% of analysis time as compared to the state-of-the-art techniques. Meanwhile, our next tool, RDIT, is able to precisely detect races in programs with incomplete source information, generating no false positives. RDIT is also maximal in the sense that it detects a maximal set of true races from the observed incomplete trace. It is underpinned by a sound BarrierPair model that abstracts away the missing events by capturing the invocation data of their enclosing methods. By making the least conservative assumption that a missing method introduces synchronization only when its invocation data overlaps with other missing methods, and by formulating maximal thread causality as a set of logical constraints, RDIT guarantees to precisely detect races with maximal capability. We tested RDIT against seven real-world large concurrent systems and have detected dozens of true races with zero false alarm. Comparatively, existing algorithms such as Happens-Before, Causal-Precede, and Maximal-Causality, which are all known to be precise, were observed reporting hundreds of false alarms due to trace incompleteness

    The Carceral Death Machine: Savagery, Contamination and Sacrifice in the Contemporary Prison

    Get PDF
    In this dissertation, I develop a convict epistemology that interweaves two elements: 1) a deep engagement with the works of particular philosophers and scholars investigating questions of punishment, violence, biopolitics and political philosophy 2) with some specific, publicly-reported incidents within California prisons in the late 20th and 21st centuries and my own detailed narration of events and the structural and quotidian dynamics of the prison yard as I experienced them as inmate #K73299 from 1997 to 2005. Diverging from Foucauldian theories of disciplinarity, I argue that under neoliberalism, the primary punishments that any inmate is subjected to within the carceral thresher are in excess of what they were sentenced to endure by the court. Taken together, these extrajuridical punishments constitute a thanatopolitical machinery of forms of state-organized violence that are delegated to inmates and are therefore disavowed and have utterly subsumed the carceral interior. Because this violence is directed at particular, largely racialized populations – the majority of the prison population being Black and Brown - abandonment to the contemporary prison and its thanatopolitical machinery is proto-genocidal. The primary function of the contemporary prison, then, is to actively abandon a largely racialized, rendered superfluous population within a forcefully bounded and statetotalized space to a steered machinery of delegated, proto-genocidal death production. As this thanatopolitical machinery of inmate-on-inmate violence has subsumed the prison yard, I argue that the contemporary prison is the carceral state’s manufacture of an artificial Hobbesian-style state of nature, an always potential war of all-against-all or prison race riot, through the interaction of the four following carceral logics: 1) The imposition of scarcity, 2) atop a forcefully undifferentiated population, 3) that is barred the capacity to flee, or, the state enjoying a monopoly over inmate movement, and 4) within conditions of functional lawlessness. Resultantly, through carceral inscription, each and every inmate is rendered as a “savage,” a less-than-fully-human ontological type, and it is this concept that does sufficient ideological work to anchor normative subjectivity within neoliberalized social space through negation. It is also the prison as artificial state of nature and constitutive boundary that civil society comes to define itself against, both materially and ideologically. Further, as a result of these four foundational carceral logics, inmates are forced to enact or endure daily forms of lesser violence, often as conscious means of forestalling more lethal and larger-scale entropic violence. As disease infects the individual body and undermines it, this violent “savagery” at the gates (prison race riot and lesser forms of violence meant to prevent it) is perceived within the whitesupremacist Hobbesian fantasy anchoring normative subjectivity as threatening the “body politic” with annihilation. Through Roberto Esposito’s immunitarian paradigm, the contemporary prison should be read as a series of recursive quarantines called forth to inoculate civil society from the perceived contagious threat of “violence disease” materialized as largely racialized, inmate bodies. The concept of the less-than-fully-human inmate is thus semantically overloaded with notions of both savagery and contamination then, and daily life within prison for inmates is largely organized by “prison-politics” as prophylactic, epidemiological strategy that guarantees social distance between racialized groupings that stalls out a race riot’s transmissibility as the prison’s very condition of being, And as inmates are articulated as a less-than-fully-human savage/contaminant threats, they are through René Girard’s framework of sacrificial violence to be read as being marginalized from civil society; a sacrificial category of less-than-full-humanness functioning as lightning rod or attractor for all the varied hostilities and insecurities roiling a violently restructured, neoliberalized social space. It is the contemporary prison that allows white supremacist community to cohere through time through the regular displacement of internal antagonisms generated under neoliberalism towards the inmate as sacrificial subject. The prison is a sacrificial stone

    37 Clauses: Instructions Ignore the Narrative Voice

    Get PDF

    Holland City News, Volume 67, Number 45: November 10, 1938

    Get PDF
    Newspaper published in Holland, Michigan, from 1872-1977, to serve the English-speaking people in Holland, Michigan. Purchased by local Dutch language newspaper, De Grondwet, owner in 1888.https://digitalcommons.hope.edu/hcn_1938/1044/thumbnail.jp

    Typewriters typing typist: a performance history

    Get PDF
    This study contributes to the ongoing exploration of the multiple ways visual and material artifacts perform. I take a look at how typewriters or rather how two representations of typewriters perform. I focus on two different images of working women, each rendered in terms of a popular female stereotype of the period. I selected the images because they bookend a period of time in which typewriters emerged to the fore as an efficient tool of reproduction in the business world. In turn, two different perspectives on the relationship between the typist and her typewriter, woman and machine, are provided. The study demonstrates how visual images, an advertisement from the early 1900s and a photograph from the 1920s, can be perceived and analyzed as performance events that tell us something about the cultures that produced and transmitted them and also about our current culture and how we perceive events we recall. Further, it shows us how practical performance methods contain conceptual-theoretical discourses that help us discuss how and why people perform. I undertake a critical historiography aiming to discover how the images perform certain histories. To do so, I focus on key elements in each image – the typewriting machine in Chapter Two and the woman as typewriter in Chapter Three – tracking and describing histories associated with each. In Chapter Four, I apply the stories and issues I’ve collected to an investigation of each image, adding to the perspective mix the basic “laws of theatricality” as conceptualized by Vsevolod Meyerhold. Although Meyerhold developed and experimented with his laws within the same time period that concerns me, I do not intend to draw direct correspondences between the images and Meyerhold’s application of the laws. Rather, I find the laws helpful to understanding and articulating how the images perform. That is, the laws will determine what makes for “performance” in this case. They offer a vocabulary for analyzing the images as performance events and, especially, for discussing the double-sided complexities that emerge in those events

    Decompose and Conquer: Addressing Evasive Errors in Systems on Chip

    Full text link
    Modern computer chips comprise many components, including microprocessor cores, memory modules, on-chip networks, and accelerators. Such system-on-chip (SoC) designs are deployed in a variety of computing devices: from internet-of-things, to smartphones, to personal computers, to data centers. In this dissertation, we discuss evasive errors in SoC designs and how these errors can be addressed efficiently. In particular, we focus on two types of errors: design bugs and permanent faults. Design bugs originate from the limited amount of time allowed for design verification and validation. Thus, they are often found in functional features that are rarely activated. Complete functional verification, which can eliminate design bugs, is extremely time-consuming, thus impractical in modern complex SoC designs. Permanent faults are caused by failures of fragile transistors in nano-scale semiconductor manufacturing processes. Indeed, weak transistors may wear out unexpectedly within the lifespan of the design. Hardware structures that reduce the occurrence of permanent faults incur significant silicon area or performance overheads, thus they are infeasible for most cost-sensitive SoC designs. To tackle and overcome these evasive errors efficiently, we propose to leverage the principle of decomposition to lower the complexity of the software analysis or the hardware structures involved. To this end, we present several decomposition techniques, specific to major SoC components. We first focus on microprocessor cores, by presenting a lightweight bug-masking analysis that decomposes a program into individual instructions to identify if a design bug would be masked by the program's execution. We then move to memory subsystems: there, we offer an efficient memory consistency testing framework to detect buggy memory-ordering behaviors, which decomposes the memory-ordering graph into small components based on incremental differences. We also propose a microarchitectural patching solution for memory subsystem bugs, which augments each core node with a small distributed programmable logic, instead of including a global patching module. In the context of on-chip networks, we propose two routing reconfiguration algorithms that bypass faulty network resources. The first computes short-term routes in a distributed fashion, localized to the fault region. The second decomposes application-aware routing computation into simple routing rules so to quickly find deadlock-free, application-optimized routes in a fault-ridden network. Finally, we consider general accelerator modules in SoC designs. When a system includes many accelerators, there are a variety of interactions among them that must be verified to catch buggy interactions. To this end, we decompose such inter-module communication into basic interaction elements, which can be reassembled into new, interesting tests. Overall, we show that the decomposition of complex software algorithms and hardware structures can significantly reduce overheads: up to three orders of magnitude in the bug-masking analysis and the application-aware routing, approximately 50 times in the routing reconfiguration latency, and 5 times on average in the memory-ordering graph checking. These overhead reductions come with losses in error coverage: 23% undetected bug-masking incidents, 39% non-patchable memory bugs, and occasionally we overlook rare patterns of multiple faults. In this dissertation, we discuss the ideas and their trade-offs, and present future research directions.PHDComputer Science & EngineeringUniversity of Michigan, Horace H. Rackham School of Graduate Studieshttps://deepblue.lib.umich.edu/bitstream/2027.42/147637/1/doowon_1.pd

    C++-ohjelmien laadun parantaminen staattisella koodianalyysillä

    Get PDF
    Static code analysis is the analysis of program code without executing it. Static analysis tools are therefore a useful part of automated software analysis. Typical uses for these tools are to detect software defects and otherwise suspect code. Several algorithms and formal methods are available specializing in code analysis. Token pattern matching is used by simpler tools, while more in-depth tools prefer formal methods such as abstract interpretation and model checking. The choice of algorithms thus depends on the preferred analysis precision and soundness. We introduced the practical problems facing static analysis, especially in the context of C++ software. For static analysis to work in a satisfiable way, the tool must understand the semantics of the code being analyzed. Many tools, particularly open-source ones, have deficiencies in their capabilities of code understanding due to being unable to correctly parse complex C++. Furthermore, we examined the difficulty of handling large numbers of warnings issued by these tools in mature software projects. As a summary, we presented a list of five open-source and six commercial static analysis tools that are able to analyze C++ source code. To find out the viability of integrating static analysis tools in real-world projects, we performed a two-part evaluation. The first part was a measurement of the detection accuracy of four open-source and two commercial tools in 30 synthetic test cases. We discovered that Clang excels in this test, although each tool found different sets of defects, thus reaffirming the idea that multiple tools should be used together. In the second part of the evaluation, we applied these tools on six consecutive point releases of DynaRoad. While none of the tools were able to detect any of the crash defects known in these releases, they proved to be valuable in finding other unknown problems in our code base. Finally, we detailed the integration effort of three static analysis tools into our existing build process.Staattisella koodianalyysilla tarkoitetaan ohjelmakoodin analysointia suorittamatta sitä. Tämä tekee siitä hyödyllistä ohjelmien automaattista analyysia varten. Tyypillisiä käyttökohteita ovat ohjelmavirheiden havaitseminen sekä tyylitarkastuksien tekeminen. Analyysityökalujen toteuttamiseen on useita algoritmeja sekä formaaleja menetelmiä. Yksinkertaisemmat työkalut turvautuvat merkeistä koostuvien hahmojen etsimiseen lähdekoodista. Toteutustavan valinta riippuu pitkälti halutusta analyysin tarkkuudesta. Työssä esiteltiin C++-ohjelmien analyysiin kohdistuvia ongelmia. Staattisen analyysityökalun on toimiakseen ymmärrettävä analysoitava koodi riittävän hyvin, jotta analyysin tuloksista olisi hyötyä. Monella analyysityökalulla on vaikeuksia ymmärtää monimutkaista lähdekoodia, mikä koskee erityisesti avoimen lähdekoodin ohjelmia. Työssä käsiteltiin lisäksi syitä miksi laajojen ohjelmien analysointi on hankalaa suurten varoitusmäärien takia. Lopuksi listattiin viisi avoimen lähdekoodin analysointiohjelmaa sekä kuusi kaupallista ohjelmaa. Työn tarkoituksena oli selvittää mahdollisuuksia integroida staattisia analyysiohjelmia olemassa oleviin kehitysprosesseihin suorittamalla ohjelmilla kaksiosainen arviointi. Ensimmäinen arviointi koostui 30:stä synteettisestä testistä, joissa mitattiin analyysityökalujen tarkkuutta havaita ennalta määriteltyjä ohjelmavirheitä. Clang-kääntäjä suoriutui parhaiten näistä testeistä. Kaikki analyysityökalut havaitsivat kuitenkin eri virheitä, mikä vahvistaa käsitystä siitä, että mahdollisimman monen työkalun käyttö on suositeltavaa. Toisessa arvioinnissa tutkittiin valituilla analyysityökaluilla kuutta eri DynaRoadin julkaisuversiota. Saaduilla tuloksilla pystyttiin vertailemaan analyysityökalujen pätevyyttä havaita ohjelmasta raportoituja kaatumisvikoja. Analyysityökalut eivät tunnistaneet yhtään tunnettua vikaa, mutta osoittivat hyödyllisyytensä löytämällä muita tuntemattomia vikoja. Työn lopuksi käytiin läpi kolmen analyysityökalun integrointi olemassa oleviin kehitysprosesseihin

    マックとマッド--狼藉たるビクトリア時代の街路管理--デッケンズ「荒涼館」の記述から

    Get PDF
    本稿は、チャールズ・ディケンズ「荒涼館」に現れるロンドンの警察の考え方と態度との結び付きを考察するものである。当時の史料を使って、ビクトリア朝の警察がどのようにロンドン市街で取締りを行い、秩序を維持しようとしたかを見てゆく。動物の排泄物の清掃から始まり、行き交う馬車の交通整理をし、犯罪を取り締まり、はやり病を減らし、浮浪者をあしらう等々、ビクトリア時代の街路に発生する問題はお話にならないほどひどかった。世界一早く産業化した資本主義の国として、ビクトリア時代のイギリス人はこれらの都市問題を解決するお手本をほとんど持っていなかった。ディケンズは、警官と徒手空拳で遣り合う道路清掃夫ジョーの姿を同情を込めて描き出している。このジョーは当時のイギリス人が街路で発生する問題に向き合い、乗り越えてゆくあれやこれやの苦労をまざまざと見せてくれる。このようにある時は正面から又ある時は一寸斜に構えて当時の社会状況を重層的に描き出しているのである。This paper explores the connections between the attitudes and posture of the London police in Charles Dickens’s novel, Bleak House, with the historical context of Victorian attempts to police, regulate, and order the actual streets and roads of London. The transport problems facing Victorian streets were monumental, ranging from cleaning up animal waste, regulating wheeled traffic, preventing crime, minimizing epidemic disease, and appropriately dealing with vagrants. As the world’s first fully-industrialized, capitalist country, Victorians had few models to look to in order to solve their urban dilemmas. Dickens creates a sympatheticcharacter in the form of Jo the street sweeper who faces police authority at a distinct disadvantage, and who embodies many of the problems Victorians faced in handling their street-related problems, acting as a palimpsest to refract and to reflect historical conditions
    corecore