I can reproduce the problem even when using cmake as recommended. The problem is proton's fast and loose use of binary data in the codec. The assumption that a struct will be placed on the stack a certain way falls apart in 64bit Visual Studio, so that it is no longer OK to use either a single argument (pn_data_t struct) or two separate ones (a size_t and char*), depending on what's convenient at the time. The va_arg macro works very differently in 32bit versus 64bit in this case.
I will have a work-around patch soon and will separately work an official fix through review board and PROTON-488 Cliff On Thu, Jan 23, 2014 at 12:15 PM, Chuck Rolke (JIRA) <[email protected]> wrote: > > [ > https://issues.apache.org/jira/browse/PROTON-488?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13880309#comment-13880309 > ] > > Chuck Rolke commented on PROTON-488: > ------------------------------------ > > I never let cmake decide which compiler to use. Even with the x64 Win64 > Command Prompt cmake is building a 32-bit solution. Try forcing a 64-bit > solution with > >> cmake -G "Visual Studio 10 Win64" . > > Getting the correct solution generated by cmake makes changing properties > (steps 3-6) unnecessary. > > >> Windows 7 64-bit VS2010 qpid-proton Crash on Startup with Send / Recv >> Application >> --------------------------------------------------------------------------------- >> >> Key: PROTON-488 >> URL: https://issues.apache.org/jira/browse/PROTON-488 >> Project: Qpid Proton >> Issue Type: Bug >> Components: proton-c >> Affects Versions: 0.6 >> Environment: Windows 7 64-bit VS 2010 >> Reporter: Frank Quinn >> Assignee: Cliff Jansen >> Priority: Critical >> Attachments: qpid-proton-win64-send-crash.png >> >> >> Steps to recreate: >> 1. Grab latest 0.6 tarball >> 2. Start up Visual Studio x64 Win64 Command Prompt (2010) and run "cmake ." >> to generate the visual studio files >> 3. Open Up the newly created Proton.sln in VS2010, right click on >> qpid-proton and add the path to python to executable directories >> 4. In the configuration manager, select qpid-proton and select active >> configuration to be Debug, then select "Add" to add x64 support, copying >> win32 configuration in the process. >> 5. Select qpid-proton properties and remove the hard coded /machine:X86 >> extra command lines in Linker -> Command Line (MACHINE:X64 should already be >> in the command line above so no need to add here) >> 6. Right click on qpid-proton and select build >> Repeat steps 3-6 for send / recv applications. When you run recv, then run >> send, you'll get a crash with the (soon to be attached) trace. >> Cheers, >> Frank > > > > -- > This message was sent by Atlassian JIRA > (v6.1.5#6160)
