accumulo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Josh Elser <josh.el...@gmail.com>
Subject Fwd: New Defects reported by Coverity Scan for Accumulo
Date Fri, 08 Jul 2016 17:19:14 GMT
FYI, I just uploaded a fresh build off of 1.7.3-SNAPSHOT. Nothing scary 
in the defects, but if anyone is interested, at least there's a recent 
build to look at.

-------- Original Message --------
Subject: New Defects reported by Coverity Scan for Accumulo
Date: Fri, 08 Jul 2016 10:01:02 -0700
From: scan-admin@coverity.com
To: josh.elser@gmail.com


Hi,

Please find the latest report on new defect(s) introduced to Accumulo 
found with Coverity Scan.

11 new defect(s) introduced to Accumulo found with Coverity Scan.
203 defect(s), reported by Coverity Scan earlier, were marked fixed in 
the recent build analyzed by Coverity Scan.

New defect(s) Reported-by: Coverity Scan
Showing 11 of 11 defect(s)


** CID 1357389:  Concurrent data access violations  (SINGLETON_RACE)


________________________________________________________________________________________________________
*** CID 1357389:  Concurrent data access violations  (SINGLETON_RACE)
/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/LogServlet.java: 
48 in 
org.apache.accumulo.monitor.servlets.LogServlet.pageBody(javax.servlet.http.HttpServletRequest,

javax.servlet.http.HttpServletResponse, java.lang.StringBuilder)()
42       }
43
44       @Override
45       protected void pageBody(HttpServletRequest req, 
HttpServletResponse resp, StringBuilder sb) {
46         AccumuloConfiguration conf = 
Monitor.getContext().getConfiguration();
47         boolean clear = true;
>>>     CID 1357389:  Concurrent data access violations  (SINGLETON_RACE)
>>>     In call to "conf.get(org.apache.accumulo.core.conf.Property.MONITOR_LOG_DATE_FORMAT)",
"org.apache.accumulo.core.conf.Property.MONITOR_LOG_DATE_FORMAT" is modified without proper
synchronization. This member might be written by multiple threads serving simultaneous requests,
leading to unpredictable behavior. (The virtual call resolves to "org.apache.accumulo.core.client.impl.ClientContext.1.get".)
48         final String dateFormatStr = 
conf.get(Property.MONITOR_LOG_DATE_FORMAT);
49         SimpleDateFormat fmt;
50         try {
51           fmt = new SimpleDateFormat(dateFormatStr);
52         } catch (IllegalArgumentException e) {
53           log.warn("Could not instantiate SimpleDateFormat with 
format string of '" + dateFormatStr + "', using default format string");

** CID 1357388:    (SINGLETON_RACE)


________________________________________________________________________________________________________
*** CID 1357388:    (SINGLETON_RACE)
/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Basic.java: 
88 in 
org.apache.accumulo.monitor.servlets.trace.Basic.getScanner(java.lang.StringBuilder)()
82         final AuthenticationToken at;
83         Map<String,String> loginMap = 
conf.getAllPropertiesWithPrefix(Property.TRACE_TOKEN_PROPERTY_PREFIX);
84         // May be null
85         String keytab = 
loginMap.get(Property.TRACE_TOKEN_PROPERTY_PREFIX.getKey() + "keytab");
86
87         if (saslEnabled && null != keytab) {
>>>     CID 1357388:    (SINGLETON_RACE)
>>>     In call to "conf.get(org.apache.accumulo.core.conf.Property.TRACE_USER)",
"org.apache.accumulo.core.conf.Property.TRACE_USER" is modified without proper synchronization.
This member might be written by multiple threads serving simultaneous requests, leading to
unpredictable behavior. (The virtual call resolves to "org.apache.accumulo.core.client.impl.ClientContext.1.get".)
88           principal = 
SecurityUtil.getServerPrincipal(conf.get(Property.TRACE_USER));
89           try {
90             traceUgi = 
UserGroupInformation.loginUserFromKeytabAndReturnUGI(principal, keytab);
91           } catch (IOException e) {
92             throw new RuntimeException("Failed to login as trace 
user", e);
93           }
/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Basic.java: 
95 in 
org.apache.accumulo.monitor.servlets.trace.Basic.getScanner(java.lang.StringBuilder)()
89           try {
90             traceUgi = 
UserGroupInformation.loginUserFromKeytabAndReturnUGI(principal, keytab);
91           } catch (IOException e) {
92             throw new RuntimeException("Failed to login as trace 
user", e);
93           }
94         } else {
>>>     CID 1357388:    (SINGLETON_RACE)
>>>     In call to "conf.get(org.apache.accumulo.core.conf.Property.TRACE_USER)",
"org.apache.accumulo.core.conf.Property.TRACE_USER" is modified without proper synchronization.
This member might be written by multiple threads serving simultaneous requests, leading to
unpredictable behavior. (The virtual call resolves to "org.apache.accumulo.core.conf.SiteConfiguration.get".)
95           principal = conf.get(Property.TRACE_USER);
96         }
97
98         if (!saslEnabled) {
99           if (loginMap.isEmpty()) {
100             Property p = Property.TRACE_PASSWORD;

** CID 1357387:  Concurrent data access violations  (SINGLETON_RACE)


________________________________________________________________________________________________________
*** CID 1357387:  Concurrent data access violations  (SINGLETON_RACE)
/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/trace/Basic.java: 
117 in 
org.apache.accumulo.monitor.servlets.trace.Basic.getScanner(java.lang.StringBuilder)()
111             at = token;
112           }
113         } else {
114           at = null;
115         }
116
>>>     CID 1357387:  Concurrent data access violations  (SINGLETON_RACE)
>>>     In call to "conf.get(org.apache.accumulo.core.conf.Property.TRACE_TABLE)",
"org.apache.accumulo.core.conf.Property.TRACE_TABLE" is modified without proper synchronization.
This member might be written by multiple threads serving simultaneous requests, leading to
unpredictable behavior. (The virtual call resolves to "org.apache.accumulo.core.conf.SiteConfiguration.get".)
117         final String table = conf.get(Property.TRACE_TABLE);
118         Scanner scanner;
119         if (null != traceUgi) {
120           try {
121             scanner = traceUgi.doAs(new 
PrivilegedExceptionAction<Scanner>() {
122

** CID 1357386:  Concurrent data access violations  (SINGLETON_RACE)


________________________________________________________________________________________________________
*** CID 1357386:  Concurrent data access violations  (SINGLETON_RACE)
/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/BasicServlet.java: 
59 in 
org.apache.accumulo.monitor.servlets.BasicServlet.doGet(javax.servlet.http.HttpServletRequest,

javax.servlet.http.HttpServletResponse)()
53
54       @Override
55       public void doGet(HttpServletRequest req, HttpServletResponse 
resp) throws ServletException, IOException {
56         StringBuilder sb = new StringBuilder();
57         try {
58           Monitor.fetchData();
>>>     CID 1357386:  Concurrent data access violations  (SINGLETON_RACE)
>>>     In call to "org.apache.accumulo.monitor.Monitor.getContext().getConfiguration().get(org.apache.accumulo.core.conf.Property.MONITOR_BANNER_TEXT)",
"org.apache.accumulo.core.conf.Property.MONITOR_BANNER_TEXT" is modified without proper synchronization.
This member might be written by multiple threads serving simultaneous requests, leading to
unpredictable behavior. (The virtual call resolves to "org.apache.accumulo.core.client.impl.ClientContext.1.get".)
59           bannerText = 
sanitize(Monitor.getContext().getConfiguration().get(Property.MONITOR_BANNER_TEXT));
60           bannerColor = 
Monitor.getContext().getConfiguration().get(Property.MONITOR_BANNER_COLOR).replace("'", 
"&#39;");
61           bannerBackground = 
Monitor.getContext().getConfiguration().get(Property.MONITOR_BANNER_BACKGROUND).replace("'",

"&#39;");
62           pageStart(req, resp, sb);
63           pageBody(req, resp, sb);
64           pageEnd(req, resp, sb);

** CID 1357385:  Concurrent data access violations  (SINGLETON_RACE)


________________________________________________________________________________________________________
*** CID 1357385:  Concurrent data access violations  (SINGLETON_RACE)
/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/BasicServlet.java: 
60 in 
org.apache.accumulo.monitor.servlets.BasicServlet.doGet(javax.servlet.http.HttpServletRequest,

javax.servlet.http.HttpServletResponse)()
54       @Override
55       public void doGet(HttpServletRequest req, HttpServletResponse 
resp) throws ServletException, IOException {
56         StringBuilder sb = new StringBuilder();
57         try {
58           Monitor.fetchData();
59           bannerText = 
sanitize(Monitor.getContext().getConfiguration().get(Property.MONITOR_BANNER_TEXT));
>>>     CID 1357385:  Concurrent data access violations  (SINGLETON_RACE)
>>>     In call to "org.apache.accumulo.monitor.Monitor.getContext().getConfiguration().get(org.apache.accumulo.core.conf.Property.MONITOR_BANNER_COLOR)",
"org.apache.accumulo.core.conf.Property.MONITOR_BANNER_COLOR" is modified without proper synchronization.
This member might be written by multiple threads serving simultaneous requests, leading to
unpredictable behavior. (The virtual call resolves to "org.apache.accumulo.core.client.impl.ClientContext.1.get".)
60           bannerColor = 
Monitor.getContext().getConfiguration().get(Property.MONITOR_BANNER_COLOR).replace("'", 
"&#39;");
61           bannerBackground = 
Monitor.getContext().getConfiguration().get(Property.MONITOR_BANNER_BACKGROUND).replace("'",

"&#39;");
62           pageStart(req, resp, sb);
63           pageBody(req, resp, sb);
64           pageEnd(req, resp, sb);
65         } catch (Throwable t) {

** CID 1357384:  Concurrent data access violations  (SINGLETON_RACE)


________________________________________________________________________________________________________
*** CID 1357384:  Concurrent data access violations  (SINGLETON_RACE)
/server/monitor/src/main/java/org/apache/accumulo/monitor/servlets/BasicServlet.java: 
61 in 
org.apache.accumulo.monitor.servlets.BasicServlet.doGet(javax.servlet.http.HttpServletRequest,

javax.servlet.http.HttpServletResponse)()
55       public void doGet(HttpServletRequest req, HttpServletResponse 
resp) throws ServletException, IOException {
56         StringBuilder sb = new StringBuilder();
57         try {
58           Monitor.fetchData();
59           bannerText = 
sanitize(Monitor.getContext().getConfiguration().get(Property.MONITOR_BANNER_TEXT));
60           bannerColor = 
Monitor.getContext().getConfiguration().get(Property.MONITOR_BANNER_COLOR).replace("'", 
"&#39;");
>>>     CID 1357384:  Concurrent data access violations  (SINGLETON_RACE)
>>>     In call to "org.apache.accumulo.monitor.Monitor.getContext().getConfiguration().get(org.apache.accumulo.core.conf.Property.MONITOR_BANNER_BACKGROUND)",
"org.apache.accumulo.core.conf.Property.MONITOR_BANNER_BACKGROUND" is modified without proper
synchronization. This member might be written by multiple threads serving simultaneous requests,
leading to unpredictable behavior. (The virtual call resolves to "org.apache.accumulo.core.client.impl.ClientContext.1.get".)
61           bannerBackground = 
Monitor.getContext().getConfiguration().get(Property.MONITOR_BANNER_BACKGROUND).replace("'",

"&#39;");
62           pageStart(req, resp, sb);
63           pageBody(req, resp, sb);
64           pageEnd(req, resp, sb);
65         } catch (Throwable t) {
66           log.error("Error building page " + req.getRequestURI(), t);

** CID 1357383:    (NULL_RETURNS)
/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionCheckerContext.java: 
113 in 
org.apache.accumulo.tserver.ConditionCheckerContext.checkConditions(org.apache.accumulo.core.iterators.SortedKeyValueIterator,

org.apache.accumulo.tserver.data.ServerConditionalMutation)()
/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionCheckerContext.java: 
115 in 
org.apache.accumulo.tserver.ConditionCheckerContext.checkConditions(org.apache.accumulo.core.iterators.SortedKeyValueIterator,

org.apache.accumulo.tserver.data.ServerConditionalMutation)()


________________________________________________________________________________________________________
*** CID 1357383:    (NULL_RETURNS)
/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionCheckerContext.java: 
113 in 
org.apache.accumulo.tserver.ConditionCheckerContext.checkConditions(org.apache.accumulo.core.iterators.SortedKeyValueIterator,

org.apache.accumulo.tserver.data.ServerConditionalMutation)()
107         boolean add = true;
108
109         for (TCondition tc : scm.getConditions()) {
110
111           Range range;
112           if (tc.hasTimestamp)
>>>     CID 1357383:    (NULL_RETURNS)
>>>     Dereferencing a pointer that might be null "tc.getCv()" when calling "Text".
113             range = Range.exact(new Text(scm.getRow()), new 
Text(tc.getCf()), new Text(tc.getCq()), new Text(tc.getCv()), tc.getTs());
114           else
115             range = Range.exact(new Text(scm.getRow()), new 
Text(tc.getCf()), new Text(tc.getCq()), new Text(tc.getCv()));
116
117           SortedKeyValueIterator<Key,Value> iter = 
buildIterator(systemIter, tc);
118
/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionCheckerContext.java: 
115 in 
org.apache.accumulo.tserver.ConditionCheckerContext.checkConditions(org.apache.accumulo.core.iterators.SortedKeyValueIterator,

org.apache.accumulo.tserver.data.ServerConditionalMutation)()
109         for (TCondition tc : scm.getConditions()) {
110
111           Range range;
112           if (tc.hasTimestamp)
113             range = Range.exact(new Text(scm.getRow()), new 
Text(tc.getCf()), new Text(tc.getCq()), new Text(tc.getCv()), tc.getTs());
114           else
>>>     CID 1357383:    (NULL_RETURNS)
>>>     Dereferencing a pointer that might be null "tc.getCv()" when calling "Text".
115             range = Range.exact(new Text(scm.getRow()), new 
Text(tc.getCf()), new Text(tc.getCq()), new Text(tc.getCv()));
116
117           SortedKeyValueIterator<Key,Value> iter = 
buildIterator(systemIter, tc);
118
119           ByteSequence cf = new ArrayByteSequence(tc.getCf());
120           iter.seek(range, Collections.singleton(cf), true);

** CID 1357382:    (NULL_RETURNS)
/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionCheckerContext.java: 
113 in 
org.apache.accumulo.tserver.ConditionCheckerContext.checkConditions(org.apache.accumulo.core.iterators.SortedKeyValueIterator,

org.apache.accumulo.tserver.data.ServerConditionalMutation)()
/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionCheckerContext.java: 
115 in 
org.apache.accumulo.tserver.ConditionCheckerContext.checkConditions(org.apache.accumulo.core.iterators.SortedKeyValueIterator,

org.apache.accumulo.tserver.data.ServerConditionalMutation)()


________________________________________________________________________________________________________
*** CID 1357382:    (NULL_RETURNS)
/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionCheckerContext.java: 
113 in 
org.apache.accumulo.tserver.ConditionCheckerContext.checkConditions(org.apache.accumulo.core.iterators.SortedKeyValueIterator,

org.apache.accumulo.tserver.data.ServerConditionalMutation)()
107         boolean add = true;
108
109         for (TCondition tc : scm.getConditions()) {
110
111           Range range;
112           if (tc.hasTimestamp)
>>>     CID 1357382:    (NULL_RETURNS)
>>>     Dereferencing a pointer that might be null "tc.getCq()" when calling "Text".
113             range = Range.exact(new Text(scm.getRow()), new 
Text(tc.getCf()), new Text(tc.getCq()), new Text(tc.getCv()), tc.getTs());
114           else
115             range = Range.exact(new Text(scm.getRow()), new 
Text(tc.getCf()), new Text(tc.getCq()), new Text(tc.getCv()));
116
117           SortedKeyValueIterator<Key,Value> iter = 
buildIterator(systemIter, tc);
118
/server/tserver/src/main/java/org/apache/accumulo/tserver/ConditionCheckerContext.java: 
115 in 
org.apache.accumulo.tserver.ConditionCheckerContext.checkConditions(org.apache.accumulo.core.iterators.SortedKeyValueIterator,

org.apache.accumulo.tserver.data.ServerConditionalMutation)()
109         for (TCondition tc : scm.getConditions()) {
110
111           Range range;
112           if (tc.hasTimestamp)
113             range = Range.exact(new Text(scm.getRow()), new 
Text(tc.getCf()), new Text(tc.getCq()), new Text(tc.getCv()), tc.getTs());
114           else
>>>     CID 1357382:    (NULL_RETURNS)
>>>     Dereferencing a pointer that might be null "tc.getCq()" when calling "Text".
115             range = Range.exact(new Text(scm.getRow()), new 
Text(tc.getCf()), new Text(tc.getCq()), new Text(tc.getCv()));
116
117           SortedKeyValueIterator<Key,Value> iter = 
buildIterator(systemIter, tc);
118
119           ByteSequence cf = new ArrayByteSequence(tc.getCf());
120           iter.seek(range, Collections.singleton(cf), true);

** CID 1357380:  Concurrent data access violations  (GUARDED_BY_VIOLATION)
/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooCache.java: 
280 in 
org.apache.accumulo.fate.zookeeper.ZooCache$2.run(org.apache.zookeeper.ZooKeeper)()


________________________________________________________________________________________________________
*** CID 1357380:  Concurrent data access violations  (GUARDED_BY_VIOLATION)
/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooCache.java: 
280 in 
org.apache.accumulo.fate.zookeeper.ZooCache$2.run(org.apache.zookeeper.ZooKeeper)()
274           @Override
275           public byte[] run(ZooKeeper zooKeeper) throws 
KeeperException, InterruptedException {
276             Stat stat = null;
277             cacheReadLock.lock();
278             try {
279               if (cache.containsKey(zPath)) {
>>>     CID 1357380:  Concurrent data access violations  (GUARDED_BY_VIOLATION)
>>>     Accessing "statCache" without holding lock "ZooCache.cacheWriteLock.lock()".
Elsewhere, "org.apache.accumulo.fate.zookeeper.ZooCache.statCache" is accessed with "ZooCache.cacheWriteLock.lock()"
held 5 out of 6 times.
280                 stat = statCache.get(zPath);
281                 copyStats(status, stat);
282                 return cache.get(zPath);
283               }
284             } finally {
285               cacheReadLock.unlock();

** CID 1357379:  Null pointer dereferences  (FORWARD_NULL)
/proxy/src/main/java/org/apache/accumulo/proxy/Proxy.java: 217 in 
org.apache.accumulo.proxy.Proxy.createProxyServer(com.google.common.net.HostAndPort, 
org.apache.thrift.protocol.TProtocolFactory, java.util.Properties, 
org.apache.accumulo.core.client.ClientConfiguration)()


________________________________________________________________________________________________________
*** CID 1357379:  Null pointer dereferences  (FORWARD_NULL)
/proxy/src/main/java/org/apache/accumulo/proxy/Proxy.java: 217 in 
org.apache.accumulo.proxy.Proxy.createProxyServer(com.google.common.net.HostAndPort, 
org.apache.thrift.protocol.TProtocolFactory, java.util.Properties, 
org.apache.accumulo.core.client.ClientConfiguration)()
211         ThriftServerType serverType = DEFAULT_SERVER_TYPE;
212         if (!THRIFT_SERVER_TYPE_DEFAULT.equals(serverTypeStr)) {
213           serverType = ThriftServerType.get(serverTypeStr);
214         }
215
216         SslConnectionParams sslParams = null;
>>>     CID 1357379:  Null pointer dereferences  (FORWARD_NULL)
>>>     Assigning: "saslParams" = "null".
217         SaslServerConnectionParams saslParams = null;
218         switch (serverType) {
219           case SSL:
220             sslParams = 
SslConnectionParams.forClient(ClientContext.convertClientConfig(clientConf));
221             break;
222           case SASL:

** CID 1357373:  Concurrent data access violations  (ATOMICITY)
/server/tserver/src/main/java/org/apache/accumulo/tserver/NativeMap.java: 533 
in org.apache.accumulo.tserver.NativeMap.mutate(java.util.List, int)()


________________________________________________________________________________________________________
*** CID 1357373:  Concurrent data access violations  (ATOMICITY)
/server/tserver/src/main/java/org/apache/accumulo/tserver/NativeMap.java: 533 
in org.apache.accumulo.tserver.NativeMap.mutate(java.util.List, int)()
527
528             modCount++;
529
530             int count = 0;
531             while (iter.hasNext() && count < 10) {
532               Mutation mutation = iter.next();
>>>     CID 1357373:  Concurrent data access violations  (ATOMICITY)
>>>     Using an unreliable value of "mutationCount" inside the second locked section.
If the data that "mutationCount" depends on was changed by another thread, this use might
be incorrect.
533               mutationCount = _mutate(mutation, mutationCount);
534               count += mutation.size();
535             }
536           } finally {
537             wlock.unlock();
538           }


________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, 
https://scan.coverity.com/projects/accumulo?tab=overview

To manage Coverity Scan email notifications for "josh.elser@gmail.com", 
click 
https://scan.coverity.com/subscriptions/edit?email=josh.elser%40gmail.com&token=9ab0764ecebcd70b5ff2d25f8033c7a7


Mime
View raw message