Function calls multithreaded suddenly causing blockages

I'm having a problem with function calls from multiple threads. There are two threads that everyone calls a function called save_program, including a DDCChannelHandleGroup and and a certain structure "show pulse" moved. The problem I have is that after that I called him save_program of one of the sons, it crashes when I try to call from the other thread. There are three contexts for this - two in the main thread and the other in the thread of data acquisition.

If I call the save_program of one of the contexts in the main thread, the program crashes when I try to call it in the thread for the acquisition of data and vice versa. No problem since the two contexts in the same thread. I put a breakpoint in the function call and the first part of the executable code in save_program (declaration of variable initialized to NULL), and the program freezes between these two breakpoints. I checked and always executed entirely complete in each of the threads AND the call of CmtExitThreadPoolThread() also runs very well. I also locked up all instances of save_program in CmtGetLock/CmtReleaseLock calls without success. Oddly, these calls used to cause no problems with the exact configuration of multithreading even. I don't know what has changed.

Hi PaulGanssle,

It is very possible that you have already encountered a problem experienced in LabWindows/CVI where transactions must be completed before calling SaveFile.  I have included a link below that talks a little more about this problem.

http://zone.NI.com/DevZone/CDA/tut/p/ID/12323#281013_by_Category

It is a question that has been reported and is managed by R & D.  From now on, it is not a fix available but I hope we can find a work around that will work for your application.

Please let me know if you have any other questions.

Kind regards

Kyle S

Tags: NI Software

Similar Questions

  • Captivate 8 - error R6025 - Pure virtual function call

    My teammates and I have 8 installed Captivate recently and while working on a large project for a client, some of our files has been corrupted. We couldn't open them and we would get a Runtime Error R6025 - Pure virtual function call. Some members of the team can still open these files CP8, but eventually, everyone is the error and we could not open the files, even if they were followed by several times.

    Someone at - it the same problem? We have suddenly regrets buying all these Captivate 8 licenses. Captivate 6 never gave us this problem, and it's really had to happen with a great project for a client.

    Just answered this in another thread (note we used 7 Captivate so it might be a different error).

    We found that when we created files with embedded in swf files that existed above widgets in the timeline panel, when someone else has tried to open the files he broke / we got the runtime error. The original person could still open for awhile, but hides would be clearly and that they could not.

    However, if we ensured that swf files are below widgets in the source files, it didn't break. Indeed, if we found one that broke and got the author to move the SWF in the timeline, he would start working for others.

    STRANGE! I would like to know if it works for you!

  • Tecra A9 tcrdmain.exe Vista Runtime error R6025 pure virtual function call

    At the start of Vista, I get the following runtime error:

    Program c:\program files\toshiba\flashcards\tcrdmain.exe

    + R6025

    + pure virtual function call.

    Concerning

    Friend Nel

    Hello

    I see that this error is due to the flashcards\tcrdmain.exe.
    This flashcard application belongs to the Toshiba Vista Package added value and I think you should try to reinstall this package again.

    First, he must remove the old system VAP. Download the most recent PPV from the European driver Toshiba page, then reinstall it.

    Good luck

  • XNET Config read to fill in when a certain arbid is received (i.e. return of function call when the msg is received)

    The API XNET-CAN allows to hardware configuration such that a call to read the framework/signal does not return until the message is received (no need to query the buffer, call to the function is as an event... function returns when a message is received) or if a time-out occurs).  I don't really want to query for data, unless I absolutely have to.  My plan is to have parallel code to wait for a specific message to receive and respond (should be very fast!) whil a different loop receives all other executives.

    A time-out of the reading function call would work pretty good, but it doesn't seem to work (see extracts attached).  The value of timeout only seems to work (no error property) is a value of 0 seconds.

    Thank you

    Todd

    Change of a single point of session for a queued session.

  • How does the library function call Labview? Can I emulate using C++?

    Hi all. I recently finished writing a dll CUDA for LabView, and now I'm in the steps of optimization of code, memory management, etc. BUT since my code depends on the entries of Labview (lots of data under types of specific data as table manages and Clusters labview) I can't use the CUDA Profiler or the Profiler VC ++ on the DLL. What I intend to do runs labview and then out of all data entry for the DLL in a binary file and then add an additional function in my code that will read in the binary file, allocate and assign variables to their respective positions, and then call the specific DLL function in Labview. In the end, this miniature function will act as the library function call to my specific group of data entries.

    In any case, I started to make this purchase all my data entry of cluster and it comes out in a binary file. And then I started the initialization of the handles of labview, allocating memory and begins to write the binary data in the memory and it works for integers (ints), floats, etc., but I'm confused on how it works with table handles!

    Some examples of code:

    Sets the Handle for table 1 d for INT
    typedef struct {}
    int length;
    int val [1];
    to access the value in a row-online val [Online]
    } Array1dInt, * Array1dIntHandle;

    int main()
    {
    Array1dIntHandle x = new Array1dInt *;
    (* x) = new Array1dInt;

    ifstream file ('TESTDATAIN.dat', ios: in | ios::binary);

    If (file.is_open ())
    {
    file ((char *) &(*x)-> length, sizeof;)
    file ((char *) &(*x)-> val [0], sizeof (int) *(*x)-> length);

    LabviewSpecificFunction (x);
    leader. Close();
    } else
    {
    < "file="" did="" not="" open!"=""><>
    }
    return 0;
    }

    __declspec(dllexport) LabviewSpecificFunction (Array1dIntHandle x)
    {
    ...
    }

    However, my program crashes when the table is nominally big, and it is expected, because if we look at the Array1dHandle, it has allocated only enough memory to 1 item of value! YET, somehow, in its magical and mysterious labview is capable of making val [1] be val [HOWEVERMANYYOUWANT], even if C++ 101 says that val [1] is a constant pointer, and even if I dynamically allocated memory another somwhere, I would never be able to put these data in this round!

    Can you explain, or maybe even write example on how I can fool my program into thinking that the binary code comes from labview, so I can then run my program independent of allowing me to profile the functions inside labview?

    I hope that this question is clear and my sample code is also clear, but I'm happy to answer any questions that relate to this.

    Thank you all!

    I think that I thought about it.

    Array1dIntHandle x = new Array1dInt *;
    int tempsize;
    file ((char *) & tempsize, sizeof;)
    (* x) = (Array1dInt *) malloc (sizeof (int) + sizeof (int) * tempsize);
    (* x)-> length = tempsize;
    file ((char *) &(*x)-> val [0], sizeof (int) *(*x)-> length);

    Well enough, you will need to make the handle, and then make a new Array1dInt * for him, then read in the length of the array in a temporary variable. Then use this information to then malloc memoery quantity you need for the table and pass this place on the handle. Now the handle will point to the size of the memory and you will be able to access the memory in the format, you've done the handle. Badabing badaboom

  • Make sure that wire you all the inputs and outputs of your node library function call?

    This document says "make sure that wire you all the inputs and outputs of your node library function call.

    http://digital.NI.com/public.nsf/WebSearch/7253D2F0D91F68058625752F005AB672?OpenDocument&submitted&&...

    But all the terminals on the right side of the call library node considered "outputs" referred to in the foregoing statement?

    This same document continues to show the right way to allocate memory with this illustration and in the illustration, the right "outputs" are left without junctions.

    Am I right in assuming that the only terminals that count as outputs, those who use the code of the DLL (modify) as output?  If it is true, then all other terminals output associated with the values entered alone so don't really account as outputs, correct?

    In the parameter call-library configuration screen there is a "Constant" check box and the help that he wrote "indicates whether the parameter is a constant."  What is this box? for me in the setup of the DLL call

    Finally, assuming that a call from the DLL that is supposed to write in these five outputs, is it legitimate to use constants like this to book a space of memory for the output values?

    How about if local variables associated with the output terminals are used instead?

    Despite the linked document, it is necessary to connect the corresponding entry for simple scalar output parameters (for example a digital). LabVIEW automatically allocate memory for them. If you do not want the entries for all the output wire anyway, there should not be no difference between a constant and a local variable; I would use a constant to avoid useless local variables.

    For settings that are only entries, there is not need to connect the outlet side. It's a bit simplistic since all parameters are entered only and get one result (other than the return value), you pass a memory address and modify the content to this address, but LabVIEW manages this dereferencing pointer for you. If you want to really get into the details, learn more about pointers in C.

    The "Constant" check box acts as the qualifier "const" on a c function parameter. It tells the compiler that the function you are calling will not change this setting. If you call a function prototype includes a const parameter, then you must mark this as a constant parameter when you configure the call library function node. Otherwise, I wouldn't worry on this subject.

  • Questions MathScript Matlab function calls

    I have a question about the m-script function call (MATLAB) in Mathscript Labivew 2009. I have attached my buggy vi for an example:

    1. I called a function 'remodel (Sigma0, [O O Q M])"in Mathscript, it gave me a syntax error, but not in Matlab R2009b. I guess that it does not tolerate a great deal of input parameters. Any idea as how use the reshape feature in Mathscript?

    2. Another problem is that I've defined a function m-script with 2 parameters, in Matlab, I can call the function with a single parameter provided, however in Mathscript, system reports error if I only provided 1 parameter to a function of 2 parameters. Any idea as how to cope with this problem?

    Because I have a lot of code in the format m-script, I don't want to rewrite a lot of new code.

    Thanks for any help.

    Hi aggressor.

    Indeed there is a small difference in the matlab function and labview mathscript reshape function reshape. The difference is that Matlab is considered always any 2D array from the perspective of lines... where LabView considered from the perspective of columns... that is, if a table 2D likeX = [has and b, c and d] is here and the (x, 1, 4) reshape in labview will give out like a, c, b, d in an array, matlab, the output will be has b, c, d in a table.

    And in Labview syntax you gave will certainly give a syntax error. Please visit the labview syntax help.

    Thank you and best regards,

    srikrishnaNF

  • How to use the node function call library for a function in the dll with the data SUB type

    Hi all

    I would ask for your kind help

    I am facing a problem with the call library node.

    I have a C++ (stdcall) function, which has Sub as data type

    XXXX error code (hwnd, lid, getValue, * Sub data1, * Sub data2)

    data1 and data2 types are constantly changing based on the value of 'getValue '.

    Mainly I can use the call library node several times and adapt each node according to the types of data data1, data2 and extract the values and use in the code. Here is no question. Real question is:

    My question:

    How can I use a node of library time call and make a case according to the 'getvalue', who will control the data1, data2 data type. Here I really seeking solutions.

    My tests:

    I used varaints as entry to the libray call node of the data1, data2 and selected parameters in the call libraby node as "Adapt to type. Here labview just crashed.

    I appreciate your suggestions to feedbackand.

    Thank you

    Karine

    You must allocate enough space for data1 and data2, and then pass a pointer to this space. An easy way to do this is the function to initialize table. Set the U8 type and size for the number of bytes required. Pass this array to the function as a pointer of table data.

    After the function call returns, you need to extract the data in the table. You can do it manually, but a simple approach is to use the array of bytes to a string. Then, in a housing structure, use Unflatten chain to convert the string to the correct data type. This method also converts the "endianness" which will be probably necessary; Be sure to only set all entries for unflatten correctly.

  • How to extract a macro function call arguments

    Hi all

    I need help related to Macros in C.

    This is my code:

    #ifndef checkTrace
    #define checkTrace (CAFC) if (1) {printf ("function called checkTrace is :") ;}
    #endif

    I am looking for is:

    Suppose that is called checkTrace (getchar ()); I want to print 'GetChar () is called from checkTrace macro.

    Like this whatever the button func called by the macro checkTrace, I want to print the message as above mentioning the button func called by checkTrace()

    Any body let me know how I can do this in CVI?

    Any help will be greatly appreciated.

    Thank you

    Herald

    I think what you need is the operator "stringification": #.

    Check this box:

    #define checkTrace (CAFC) if (1) {printf ("function called checkTrace is: ' %s", #fCall) ;}}

    checkTrace (getchar ())

  • Writing DAQmx invoke node leads to a runtime error (R6025 - pure virtual function call)

    I have a request in which a Subvi DAQmx writing calls calling node (shift of writing and reading NumChans).

    When I launch LabVIEW and the main VI a first run, everything works fine. When I run a second time, LabVIEW crashes with a runtime to Scripture DAQmx error call node:
    R6025 - pure virtual function call

    The LabVIEW failure log file contains the following lines:
    c:\builds\penguin\labview\branches\Saturn\dev\source\compiler\allocsup.cpp(662): DWarn: dataspace moved running!
    $Id: //labview/branches/Saturn/dev/source/compiler/allocsup.cpp#18 $

    Anyone has any idea how this accident could be avoided?

    Problem solved: we have just removed the line NumChan (read) from the node to invoke and readded it again. Now, it works fine.

  • Write failed with getting Sonic error R6025-Pure Virtual Function Call

    After midway to burn a DVD, Sonic fails and know that it is a R6025 Pure virtual function call and refers to commonfiles\sonicshared\sonciecentral\main\mediahub.exe.  I had several problems with this program. Is there a way to remove it and then reload it?  I don't have a disk for it.  Thank you

    Hello cmd_078m,

    Where you installed the program Sonic of origin? You can uninstall it, but it will remove the program and you will need the original media to reinstall.

    You can check with Sonic for replacement disks or you can install any other CD burning software.

    Thank you

    Marilyn

  • question of functions call listItemComponent

    Hi all, how to call the function (which is defined outside the ListView) in listItemComponent?

    Container {
        id: cont
        function getColor() {
            return Color.Black
        }
        ListView {
           id: colorList
           listItemComponents: [
               ListItemComponent {
               type: "listItem"
               Container {
               id: item
               background: ???.getColor();
    

    If you want to do this, you need a double function call

    Container {
        id: cont    function getColor(){        return Color.Black;    }
        ListView {
           id: colorList       function getColor(){           return cont.getColor();       }
           listItemComponents: [
               ListItemComponent {
               type: "listItem"
               Container {
               id: item
               background: item.ListItem.view.getColor();
    
  • How to add a menu item in a function call

    My application requires that one screen which depends on function calls I'm adding and deleting fields according to my condition.

    for example

    Public Sub one()

    {

    -addition of horizontal field Manager

    }

    Public Sub two()

    {

    Area manager portrait \\add

    }

    now my question is - is it possible to add a menu item if I call the method "a."

    and this menu item does not appear if I call the method "two".

    If possible, pls explain me how to do...

    You can check conditions before you add menuitems in makemenu

  • Reg: Count function call-

    Hi Experts,

    I am tracking my processing batch every night and find a particular function called many times.

    Is it possible that I can find how many times it was performed in a given period of time?

    AWR? Or, any dynamic view v$ _?

    Please notify.

    Thank you and best regards,

    -Nordine

    (on Oracle 10.2.0.4.0)

    Asked me the same question to the company less than a month ago so I can shed some light on this particular situation (not too much).

    Some (say seven) years ago our thinkers came up with the idea of VAE and apparently I was the only one who objected to the approach (https://www.simple-talk.com/opinion/opinion-pieces/bad-carma/ and articles in several Tom Kyte has had no effect he was only harmful for me - no promotion,...).

    Therefore, the number of attributes is greatly increased and the situation becomes more and more unbearable.

    As it is mandatory to call for attribute values, it is not just online treatment, plans sql also suffer (calling functions for each line) that the same functions are called from sql too.

    Verification of AWR reports it turns out that some functions that provide attribute values are called more than a hundead million times a day, and as we call them around there is little use querrying dependencies without taking into account the volumes of data (if only someone knew how).

    So something like WHO_CALLED_ME is required to identify the heaviest appellants and (much more than that), it is a problem of how silently (as much as possible) reduce the number of attributes where nobody is now willing to admit the decision was wrong or (not even in my dreams) that I was right.

    As far as I KNOW two attributes have been removed these time and proclaimed a spectacular feat of tuning.

    Chi lives, vedra that lets say our Italian neighbours.

    Concerning

    Etbin

  • iTunes problem. Error: R6025 - pure virtual function call

    Original title:

    iTunes problem.

    Trying to open iTunes, I get this error: R6025 - pure virtual function call. Can someone tell me what is the problem?

    Hi Dave,.

    The error indicates iTunes has not been correctly updated.

    Users facing this issue have managed to solve this problem by following the steps below.

    Try to remove all associated iTunes and then rebuild it which is often a good starting point, unless the symptoms indicate a more specific approach.

    Remove and then reinstall iTunes and other components of software for Windows Vista, Windows 7 or Windows 8

    Please return to the State of the question.

Maybe you are looking for