[Mono-bugs] [Bug 710888] New: Persistent WebException when running Simol with mono on Amazon Linux
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Sun Aug 7 15:55:34 EDT 2011
https://bugzilla.novell.com/show_bug.cgi?id=710888
https://bugzilla.novell.com/show_bug.cgi?id=710888#c0
Summary: Persistent WebException when running Simol with mono
on Amazon Linux
Classification: Mono
Product: Mono: Runtime
Version: 2.2.x
Platform: i686
OS/Version: Other
Status: NEW
Severity: Major
Priority: P5 - None
Component: io-layer
AssignedTo: mono-bugs at lists.ximian.com
ReportedBy: menkaur at gmail.com
QAContact: mono-bugs at lists.ximian.com
Found By: ---
Blocker: ---
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101
Firefox/5.0
I am using Mono to run Simol http://simol.codeplex.com/ on amazon linux
2.6.35.11-83.9.amzn1.i686 with mono version compiled from sources provided on
the website.
Following Mono version is being used:
Mono JIT compiler version 2.10.3 (tarball Sun Aug 7 09:49:15 UTC 2011)
Copyright (C) 2002-2011 Novell, Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: Included Boehm (with typed GC and Parallel Mark)
The application consistently produces following error code:
Unhandled Exception: System.Net.WebException: Error getting response stream
(Write: The authentication or decryption has failed.): SendFailure --->
System.IO.IOException: The authentication or decryption has failed. --->
Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from
server. Error code: 0xffffffff800b010a
at
Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates
(Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in
<filename unknown>:0
at
Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1
() [0x00000] in <filename unknown>:0
at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000]
in <filename unknown>:0
at (wrapper remoting-invoke-with-check)
Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()
at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage
(Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in <filename
unknown>:0
at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback
(IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback
(IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult)
[0x00000] in <filename unknown>:0
at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in <filename
unknown>:0
at
Amazon.SimpleDB.AmazonSimpleDBClient.getRequestStreamCallback[ListDomainsResponse]
(IAsyncResult result) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Net.WebException: Error getting
response stream (Write: The authentication or decryption has failed.):
SendFailure ---> System.IO.IOException: The authentication or decryption has
failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate
received from server. Error code: 0xffffffff800b010a
at
Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates
(Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in
<filename unknown>:0
at
Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1
() [0x00000] in <filename unknown>:0
at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000]
in <filename unknown>:0
at (wrapper remoting-invoke-with-check)
Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()
at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage
(Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in <filename
unknown>:0
at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback
(IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback
(IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult)
[0x00000] in <filename unknown>:0
at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in <filename
unknown>:0
at
Amazon.SimpleDB.AmazonSimpleDBClient.getRequestStreamCallback[ListDomainsResponse]
(IAsyncResult result) [0x00000] in <filename unknown>:0
The error occurs on Linux only, windows version works fine.
Here is the code which produces the error:
[DomainName("TestItem")]
public class TestItem
{
public TestItem()
{
}
public TestItem(string qualifier)
{
if (qualifier==null)
{
qualifier = "";
}
Id = qualifier + Guid.NewGuid().ToString();
Data = GenerateRandomString(rnd.Next(500, 900));
}
Random rnd = new Random();
string GenerateRandomString(int len)
{
StringBuilder result = new StringBuilder();
for (int i = 0; i < len; i++)
{
result.Append(rnd.Next(10).ToString());
}
return result.ToString();
}
[ItemName]
[Index]
public string Id { get; set; }
public string Data { get; set; }
}
class Program
{
static Random rnd = new Random();
static void Main(string[] args)
{
///http://simol.codeplex.com/wikipage?title=Getting%20Started&referringTitle=Documentation
string key = @"-------";
string value = @"--------------";
var simol = new SimolClient(key, value);
List<IAsyncResult> waits = new List<IAsyncResult>();
Console.WriteLine("Deleting items from previous test");
int id = 0;
foreach (var item in simol.Select<TestItem>("select * from
TestItem"))
{
Console.Write("{0}\t\t\r", id++);
waits.Add(simol.BeginDelete<TestItem>(item.Id, null,
null));
}
Console.WriteLine("Waiting for delete to complete....");
id = 0;
foreach (var item in waits)
{
Console.Write("{0}\t\t\r", id++);
try
{
simol.EndPut(item);
}
catch { }
}
DateTime time = DateTime.Now;
Console.WriteLine("Time started:{0}", time);
string[] groups = new string[] { "group-a-", "group-b-", "group-c-"
};
Console.WriteLine("Adding started");
for (int i = 0; i < 10000; i++)
{
try
{
waits.Add(simol.BeginPut(new
TestItem(groups[rnd.Next(groups.Length)]), null, null));
}
catch { }
}
//wait for input to finish
Console.WriteLine("Adding finished; waiting for complete");
id = 0;
foreach (var item in waits)
{
Console.Write("{0}\t\t\r", id++);
try
{
simol.EndPut(item);
}
catch { }
}
Console.WriteLine("deleting items");
var items = simol.Select<TestItem>("select * from TestItem");
Console.WriteLine(items.Count);
waits.Clear();
id = 0;
foreach (var item in simol.Select<TestItem>("select * from
TestItem"))
{
Console.Write("{0}\t\t\r", id++);
waits.Add(simol.BeginDelete<TestItem>(item.Id,null,null));
}
foreach (var item in waits)
{
Console.Write("{0}\t\t\r", id++);
try
{
simol.EndPut(item);
}
catch { }
}
var endTime = DateTime.Now;
Console.WriteLine("Operation finished:{0}",endTime);
Console.WriteLine("Time: {0}", endTime - time);
time = DateTime.Now;
Console.WriteLine("Time started:{0}", time);
var odir =
Environment.CurrentDirectory+Path.DirectorySeparatorChar+"tmp"+Path.DirectorySeparatorChar;
System.IO.Directory.CreateDirectory(odir);
for (int i = 0; i < 10000; i++)
{
Console.Write("{0}\t\t\t\t\t\r", odir + i.ToString());
Serializer.Serialize(odir + i.ToString(), new
TestItem(groups[rnd.Next(groups.Length)]));
}
items.Clear();
foreach (var item in System.IO.Directory.EnumerateFiles(odir))
{
items.Add(Serializer.DeSerialize<TestItem>(item));
}
Console.WriteLine(items.Count);
foreach (var item in System.IO.Directory.EnumerateFiles(odir))
{
File.Delete(item);
}
endTime = DateTime.Now;
Console.WriteLine("Operation finished:{0}", endTime);
Console.WriteLine("Time: {0}", endTime - time);
//var person = new Person { Name = "Jack Frost" , Id = guid};
//simol.Put(person);
//person = new Person { Name = "New name", Id = guid };
//simol.Put(person);
//foreach (var item in items)
//{
// simol.Delete<Person>(item.Id);
//}
//var res = simol.SelectScalar(new SelectCommand(typeof(Person),
"select count(*) from Person"));
//Console.WriteLine(res);
}
}
The error is generated by specifically this line of code:
simol.Select<TestItem>("select * from TestItem")
Reproducible: Always
Steps to Reproduce:
1. Enter your amazon access credentials
2. Compile
3. Run
Actual Results:
Exception stack trace
Expected Results:
Performance test results
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the mono-bugs
mailing list