Search Results

Search found 17618 results on 705 pages for 'component design'.

Page 96/705 | < Previous Page | 92 93 94 95 96 97 98 99 100 101 102 103  | Next Page >

  • Plagued by multithreaded bugs

    - by koncurrency
    On my new team that I manage, the majority of our code is platform, TCP socket, and http networking code. All C++. Most of it originated from other developers that have left the team. The current developers on the team are very smart, but mostly junior in terms of experience. Our biggest problem: multi-threaded concurrency bugs. Most of our class libraries are written to be asynchronous by use of some thread pool classes. Methods on the class libraries often enqueue long running taks onto the thread pool from one thread and then the callback methods of that class get invoked on a different thread. As a result, we have a lot of edge case bugs involving incorrect threading assumptions. This results in subtle bugs that go beyond just having critical sections and locks to guard against concurrency issues. What makes these problems even harder is that the attempts to fix are often incorrect. Some mistakes I've observed the team attempting (or within the legacy code itself) includes something like the following: Common mistake #1 - Fixing concurrency issue by just put a lock around the shared data, but forgetting about what happens when methods don't get called in an expected order. Here's a very simple example: void Foo::OnHttpRequestComplete(statuscode status) { m_pBar->DoSomethingImportant(status); } void Foo::Shutdown() { m_pBar->Cleanup(); delete m_pBar; m_pBar=nullptr; } So now we have a bug in which Shutdown could get called while OnHttpNetworkRequestComplete is occuring on. A tester finds the bug, captures the crash dump, and assigns the bug to a developer. He in turn fixes the bug like this. void Foo::OnHttpRequestComplete(statuscode status) { AutoLock lock(m_cs); m_pBar->DoSomethingImportant(status); } void Foo::Shutdown() { AutoLock lock(m_cs); m_pBar->Cleanup(); delete m_pBar; m_pBar=nullptr; } The above fix looks good until you realize there's an even more subtle edge case. What happens if Shutdown gets called before OnHttpRequestComplete gets called back? The real world examples my team has are even more complex, and the edge cases are even harder to spot during the code review process. Common Mistake #2 - fixing deadlock issues by blindly exiting the lock, wait for the other thread to finish, then re-enter the lock - but without handling the case that the object just got updated by the other thread! Common Mistake #3 - Even though the objects are reference counted, the shutdown sequence "releases" it's pointer. But forgets to wait for the thread that is still running to release it's instance. As such, components are shutdown cleanly, then spurious or late callbacks are invoked on an object in an state not expecting any more calls. There are other edge cases, but the bottom line is this: Multithreaded programming is just plain hard, even for smart people. As I catch these mistakes, I spend time discussing the errors with each developer on developing a more appropriate fix. But I suspect they are often confused on how to solve each issue because of the enormous amount of legacy code that the "right" fix will involve touching. We're going to be shipping soon, and I'm sure the patches we're applying will hold for the upcoming release. Afterwards, we're going to have some time to improve the code base and refactor where needed. We won't have time to just re-write everything. And the majority of the code isn't all that bad. But I'm looking to refactor code such that threading issues can be avoided altogether. One approach I am considering is this. For each significant platform feature, have a dedicated single thread where all events and network callbacks get marshalled onto. Similar to COM apartment threading in Windows with use of a message loop. Long blocking operations could still get dispatched to a work pool thread, but the completion callback is invoked on on the component's thread. Components could possibly even share the same thread. Then all the class libraries running inside the thread can be written under the assumption of a single threaded world. Before I go down that path, I am also very interested if there are other standard techniques or design patterns for dealing with multithreaded issues. And I have to emphasize - something beyond a book that describes the basics of mutexes and semaphores. What do you think? I am also interested in any other approaches to take towards a refactoring process. Including any of the following: Literature or papers on design patterns around threads. Something beyond an introduction to mutexes and semaphores. We don't need massive parallelism either, just ways to design an object model so as to handle asynchronous events from other threads correctly. Ways to diagram the threading of various components, so that it will be easy to study and evolve solutions for. (That is, a UML equivalent for discussing threads across objects and classes) Educating your development team on the issues with multithreaded code. What would you do?

    Read the article

  • How to add marker to rich:gmap component?

    - by ortho
    Hi everyone, I can see that I cannot specify the gmap marker in atribute.. I suppose that I need to use a4j function inside this tag. The problem is that I am complete newbie to this stuff... Could anyone tell me how to do this? step by step solution would be greatly appreciated... I have api key and map component (worked with lat and lng, zoom, etc) but need to leave a marker in the center of the map...

    Read the article

  • Myfaces extensionfilter overriding renderkit? (Tree2 component)

    - by Mike
    I've pulled in the tree2 component (from Tomahawk 1.1.9). Had used the simpler Tree component on previous projects, and this one just looks a bit nicer. Running on websphere 6.1.x and set the server side flag that's needed (com.ibm.ws.webcontainer.invokefilterscompatibility=true) and set the extensionfilter accordingly. Everything's good, and works as expected. Here's the issue: - on a page being included on this one (just some typical footer type info with NO myfaces widgets), there's some embedded html that's getting flagged with warnings in the systemout console). These look like org.apache.myfaces.renderkit.html.util.ReducedHTMLParser parse Invalid tag found: unexpected input while looking for attr name or '/' at line 475. Surroundings: 'span id="tile:footr:viewFragm'. org.apache.myfaces.renderkit.html.util.ReducedHTMLParser parse Invalid tag found: unexpected input while looking for attr name or '/' at line 479. Surroundings: 'a id="tile:footr:viewFragment'. org.apache.myfaces.renderkit.html.util.ReducedHTMLParser parse Invalid tag found: unexpected input while looking for attr name or '/' at line 492. Surroundings: 'a id="tile:footr:viewFragment'. The problem isn't necessarily with the html (which should be cleaned up regardless :-). IF I don't include myfaces, I don't get these warning messages with the default ibm jsf renderer (using jsf 1.1 still). Obviously, IBM's implementation is a bit more lax than myFaces. The page has nothing to do with myfaces at all. The reason for needing the extension filter is that it needs (for the Tree2 anyways, I know it does more for file upload) to intercept requests and then stick some .js includes on the page. Investigated this a bit, and I've included this filter in my web.xml, but it is NO longer fronting the faces servlet. So, the filter is instantiated at startup, but is never executed. Since the filter isn't in place, I've had to hard code in the includes for the 2 .js files into my page Now, the tree2 gets rendered properly, AND I'm not getting the warnings from above, because with the extentionfilter not being called, its using the IBM renderkit ;-) I'm a bit concerned that when the extension filter is in place, everything is being rendered by myFaces, rather than IBM's renderkit (i.e. All I want is myfaces/tomahawk to render the tree2 only, and let the ri do everything else) Can anyone confirm this? When you use myfaces/tomahawk, is it doing all the rendering for the whole application, or just the page any tomahawk widget is on? Thanks for any thoughts on this mike

    Read the article

  • Dynamic tab width in a Flex 4 TabBar component with skin

    - by JoriDor
    Hi, I have a Flex 4 TabBar component with a custom skin. In this skin, the item renderer is defined with an ButtonBarButton with a custom skin. All the tabs in the itemrenderer have now the same width. The client however wants me to make the tabs width dynamically, so a smaller tab for a smaller label, a bigger one for a long label. Does anybody know how to adjust the width of Tab (ButtonBarButton)? Thanks a million!

    Read the article

  • .NETCF Component that allows entering a signature

    - by Vaccano
    I need a component that will allow me to enter a signature on a Windows Mobile 5 device. I need to integrate it into my .NETCF program. I would prefer it be free (getting budget approval takes so long). (I have seen the "for pay" one by Resco.) I would need to end up storing the signature in a SQL Server database (it has to be able to serialize). If anyone has any suggestions I would love to hear them.

    Read the article

  • Component-Information from JAR-File possible?

    - by dmtg
    I would like to set up a web application with good modularity and would like to use an AJAX Toolkit/Framework like GWT or ZK for its VIEW. Component information should be load from various modules-JAR. Which AJAX Toolkit/Framework is able to do this?

    Read the article

  • .NET photo processing component

    - by John Williams
    Hi folks! I'm looking for a .NET image processing component or an open source alternative to automate the following tasks: Photo capture (webcams and photo cameras) Photo printing (grid/strip modes) Applying photo effects Saving photos AtalaSoft DotImage is quite expensive, any other suggestions are welcome. Thanks J

    Read the article

  • High quality graph/waveform display component in C#.

    - by dlopeztt
    Hi, I'm looking for a fast, professionally looking and customizable waveform display component in C#. I'm wanting to display mainly real-time audio waveforms (fast!) in both time and frequency domain. I would like the ability to zoom, change axis settings, display multiple channels, customize the feel and colors etc... Anybody knows of anything, whether commercial or not? Thank you! Diego

    Read the article

  • Logfile per Component Hierarchy

    - by Daniel Marbach
    Hello I have the following problem: ComponentA with Unique Name ChildComponent ChildChild AnotherChild Everytime a new instance of ComponentA is created I want to redirect the output to a unique file named ComponentA-UniqueName including all child component log entries. How can this be achieved? Daniel

    Read the article

  • Which component should i use?

    - by strakastroukas
    I am using the <a> element to increase the font size in my webpage. <a href="javascript:increaseFontSize();">+</a> The problem with it is that i cannot set a background image. So what component should i choose from the VS2008 toolbox that has OnClientClick property and does not post-back? For examaple, i set the OnClientClick property in a ImageButton, but the postback is executed after the ClientSide click

    Read the article

  • Create a java Date Picker component?

    - by Venkats
    I have the datepicker component in the format of MM/dd/yyyy, But I want to create date picker in java the form of dd/MM/yyyy. So where can I get the suggestion or related solutions. Please give the basic idea about that. Thanks in Advance..

    Read the article

  • Delphi Component Serialization

    - by Peter
    Has anyone run into issues serializing components into a file and reading them back, specifically in the area where the component vendor upgrades the VCL components. For example a file serialized with DelphiX and then years later read back with delphiY. Do the serialization formats change and if so what can be done to prevent errors reading in the componets when upgrading.

    Read the article

< Previous Page | 92 93 94 95 96 97 98 99 100 101 102 103  | Next Page >